mam test z pętli w ówczesnym klauzuli:testów jednostkowych Spock pętle w ówczesnej klauzuli
result.each {
it.name.contains("foo")
it.entity.subEntity == "bar"
}
for (String obj : result2) {
obj.name.contains("foo")
obj.entity.subEntity == "bar"
}
Nowo I uznał, że pętle nie są naprawdę testowany. Nie ważne czy mam foo, bar czy cokolwiek innego, test jest zawsze zielony :) Dowiedziałem się, że pętle muszą być testowane inaczej, np. z każdym'? Ale zmiana tylko "każdego" na "każdy" rzuca wyjątek:
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" }
Jak poprawnie używać pętli w teście? Używam Spocka 0,7-groovy-2.0
Uwaga! Pierwsze podejście wygeneruje bardziej czytelne komunikaty o błędach, ale zostanie ocenione jako "fałsz" (a operacja się nie powiedzie) w przypadku, gdy 'result' jest pustym zbieraniem! – Hubbitus
Dodatkowe ostrzeżenie: druga metoda może natrafić na [obecnie nierozwiązany błąd] (https://github.com/spockframework/spock/issues/253), jeśli zamknięcie, które przełączysz na "co", jest wieloma liniami. – jonnybot