Как проверить свойства объекта вложенного списка в Groovy test с spoc - PullRequest
1 голос
/ 08 апреля 2019

Я пишу отличный тест.Мой объект ответа должен выглядеть следующим образом:

[ school: new School( 
id: "School1", 
name: "School1", 
courses: [ 
new Course(id: "Course1", name: "Course1"),
new Course(id: "Course2", name: "Course2")])]

Ниже приведен мой тест:

def "should update the name of the school and course as per their id"() {

given:

def request = requestObject

when:

def response = myService.update(requestObject)

then: "name of the school should be equal to its id"
result.collect {
        it.name == it.id
}.every { it }

and: "name of each course should be equal to its id"
//Need help

}

Я не могу думать о том, как записать часть 'и' в моем тесте как еговложенная коллекция.

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Я бы предпочел использовать здесь подтверждение мощности Groovy для получения описательных сообщений об ошибках в случае несоответствий:

then: "name of the school should be equal to its id"
result.each {
    assert it.name == it.id
}

and: "name of each course should be equal to its id"
result*.courses*.each {
    assert it.name == it.id
}

*. - это Groovy-оператор распространения

Однако, если вы хотите узнать, какая школа не соответствует курсам, то в разделе and:

она будет немного более многословна.
0 голосов
/ 08 апреля 2019

Я думаю, что это может утверждать это:

result.every { it.courses.every { course => course.id == course.name }

В каждой школе каждое название курса должно совпадать с идентификатором курса.

...