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

明示的な assert ステートメントを使用します。

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 に答える