「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」句は「given」句の前に実行されるため、これmocked
は機能しません。したがって、最初に参照されたときにはまだ存在していません。どうすればこれを克服できますか?mocked
使用されているのはこのテストだけなので、このメソッドの外で作成することは避けたいと思います。
これは単純化された例であり、実際にはより多くの相互作用があり、テーブル内の他の列がn
-に影響を与えるため、テーブルの構文が非常に便利になることに注意してください。