Я пытаюсь использовать ia mocked объект в таблице предложения where. В основном как то так:
def "my test"(){
given:
InjectedObject1 inj1 = Mock()
InjectedObject2 inj2 = Mock()
SystemUnderTest system = new System(inj1, inj2)
MockedObject mocked = Mock()
inj1.someMethod() >> list // this will be a list of MockedObject
when:
system.execute()
then:
n * inj2.someOtherMethod()
where:
list | n
[mocked] | 0
[mocked, mocked] | 1
}
Это не работает, потому что предложение "where" выполняется перед предложением "дали", поэтому mocked
еще не существует, когда на него впервые ссылаются. Как мне это преодолеть? mocked
используется только этот тест, поэтому я бы хотел избежать его создания вне этого метода.
Обратите внимание, что это упрощенный пример, на самом деле больше взаимодействий и других столбцов в таблице, которые влияют на n
- что делает синтаксис таблицы очень удобным.