首页 > 解决方案 > 使用 spock 生成测试中的对象列表

问题描述

我正在编写一个 spock 测试,其中我需要生成一些测试数据(夹具)。我知道如何在 Java 中完成,但未能在 spock(groovy) 中实现。

我是 groovy 的新手,因此我提供了我的 java 实现

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
    }

Appraciate 任何帮助来修复 groovy 代码..

标签: javagroovyjava-8spock

解决方案


[1..70]创建一个包含一个元素的列表,该元素是一个范围。你想使用类似的东西(1..70)

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

只是一个旁注:您可以通过使用创建一个来避免附加到列表中collect

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

推荐阅读