Это невозможно и не имеет смысла, потому что, когда у вас есть несколько when
в одном тестовом случае, тогда между ними есть некоторая связь, и успех второго when
тогда обусловлен успехом первого when
и необходимо выполнить поведение для отказа всего тестового примера.
Если вы не предполагаете это отношение, разделите его на два или более отдельных тестовых случая:
void 'some test'() {
given:
...
when:
...
then:
...
}
void 'another test'()
given:
...
when: 'second when from some test'
...
then: 'second then from some test'
...
}
Если у вас несколькоwhen
+ then
, чтобы поделиться разделом given
, тогда вы можете иметь глобальную настройку:
class MySpec extends Specification {
setup() {
// code from the given section
}
void 'some test'() {
...
}
void 'another test'() {
...
}
}
Или вы можете создать общий метод, который будет вызываться во всех тестовых случаях, когда это необходимо.
И если несколько блоков when
отличаются только используемыми значениями, рассмотрите возможность использования блока where
. Смотрите документацию: http://spockframework.org/spock/docs/1.3/data_driven_testing.html#data-tables