In un metodo feature, si specifica l'azione feature in un blocco when:
, il cui risultato viene testato in un successivo blocco then:
. Spesso è necessaria la preparazione, che viene eseguita in una clausola given:
(o setup:
o metodo fixture). È ugualmente utile includere le condizioni preliminari: si tratta di condizioni che non sono oggetto del test funzionale (quindi non dovrebbero essere in un when:
- then:
o expect:
) ma affermano/documentano le condizioni necessarie affinché il test sia significativo. Vedere ad esempio le specifiche fittizie di seguito:Qual è lo stile giusto per le precondizioni nei metodi di Spock?
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
}
}
Qual è la pratica suggerita per queste condizioni preliminari? Nell'esempio ho usato assert
, ma molti hanno il cipiglio su assert
s in una specifica.
Questo è quello che mi piacerebbe fare. Non c'è niente di sbagliato nell'usare 'assert' in una specifica quando necessario (è ancora una condizione di Spock, non un'asserzione di Groovy). –