W metodzie elementu jeden określa działanie funkcji w bloku when:
, którego wynik zostaje przetestowany w kolejnym bloku then:
. Często potrzebne jest przygotowanie, które odbywa się w klauzuli given:
(lub setup:
lub metodzie urządzenia). Równie przydatne jest uwzględnienie warunków wstępnych: są to warunki, które nie są przedmiotem testu właściwości (dlatego nie powinny być w postaci testu), ale potwierdzają/dokumentują warunki niezbędne do tego, aby test był znaczący. Zobacz przykładową specyfikację poniżej:Jaki jest dobry styl dla warunków wstępnych w metodach cech Spocka?
import spock.lang.*
class DummySpec extends Specification {
def "The leading three-caracter substring can be extracted from a string"() {
given: "A string which is at least three characters long"
def testString = "Hello, World"
assert testString.size() > 2
when: "Applying the appropriate [0..2] operation"
def result = testString[0..2]
then: "The result is three characters long"
result.size() == 3
}
}
Jaka jest sugerowana praktyka dla tych warunków wstępnych? W tym przykładzie użyłem assert
, ale wiele jest niezrozumiałych dla assert
s w Spec.
To co bym zrobiła. Nie ma nic złego w korzystaniu z 'assert' w specyfikacji, kiedy jest taka potrzeba (nadal jest to warunek Spocka, a nie asercja Groovy). –