使用Spock在测试中生成对象列表

3

我正在编写 Spock 测试,其中我需要生成一些测试数据(固定装置)。我知道如何在 Java 中执行此操作,但无法在 Spock(Groovy)中实现它。

由于我对 Groovy 不熟悉,因此我提供我的 Java 实现:

List<Employee> employees= LongStream.range(1, 70).mapToObj(id -> {
        Employee emp = new Employee ();
        emp.setEmployeeId(id);
        return emp ;
    }).collect(Collectors.toList());

我正尝试使用Groovy实现相同的功能,但是无法做到。

def employees = [1..70].each { id ->
        def emp = new Employee()
        emp.setEmployeeId(id)
        employees << emp
    }

希望能得到任何有关修复Groovy代码的帮助。

1个回答

8

[1..70]创建了一个只包含一个范围元素的列表。你需要使用像(1..70)这样的东西:

(1..70).each{employees << new Employee(employeeId: it)}

注意:您可以通过使用 collect 来创建一个列表,而无需将其附加到已有的列表中:

List<Employee> employees = (1..70).collect{new Employee(employeeId: it)}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接