Search code examples
javagroovyjava-8spock

Genarate list of objects in test using spock


I am writing a spock test, wherein I need to generate some test data (Fixtures). I know how it could be done in Java, but failing to get it implemented in spock(groovy).

I'm new to groovy, hence I'm providing my java implementation

Java implementation as follows :

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

I'm trying to achieve the same using groovy, but unable to get it right.

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

Appraciate any help to fix the groovy code..


Solution

  • [1..70] creates a list with one element that is a range. You want to use something like (1..70):

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

    Just a side note: you can avoid appending to the list by just creating one using collect:

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