Подтвердить что ты не робот

Spock unit test петли в пункте then

У меня есть тест с циклами в предложении then:

result.each {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}

for (String obj : result2) {
  obj.name.contains("foo")
  obj.entity.subEntity == "bar"
}

Недавно я узнал, что петли на самом деле не протестированы. Неважно, есть ли у меня foo или bar или что-то еще, тест всегда зеленый:) Я узнал, что петли нужно тестировать по-разному, например. с "каждым"? Но просто изменение "каждого" на "каждое" вызывает исключение:

result.every {
  it.name.contains("foo")
  it.entity.subEntity == "bar"
}

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Spec expression: 1: expecting '}', found '==' @ line 1, column 61.
   s("foo") it.entity.rootEntity == "bar" }

Как правильно использовать циклы в моем тесте? Я использую spock 0.7- groovy -2.0

4b9b3361

Ответ 1

Используйте либо явные инструкции assert:

result.each {
    assert it.name.contains("foo")
    assert it.entity.subEntity == "bar"
}

Или одно булево выражение внутри every:

result.every {
    it.name.contains("foo") && it.entity.subEntity == "bar"
}