20

我在 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 或其他任何东西,测试总是绿色 :) 我发现,必须以不同方式测试循环,例如使用“每个”?但只需将 'each' 更改为 'every' 就会引发异常:

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

4

1 回答 1

38

要么使用显式断言语句:

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

或内的单个布尔表达式every

result.every {
    it.name.contains("foo") && it.entity.subEntity == "bar"
}
于 2013-03-05T16:22:23.207 回答