technoJ
technoJ

Reputation: 185

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..

Upvotes: 3

Views: 953

Answers (1)

ernest_k
ernest_k

Reputation: 45329

[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)}

Upvotes: 8

Related Questions