6

私はスポックが初めてで、セットアップに気づきました。仕様のステップは、その特定のテストにローカルに適用されます。従来のjunitアプローチと同様に、これらのフィクスチャ間でセットアップを共有するにはどうすればよいですか?

ありがとう!

def "setup with spock"() {
    setup:
    def message = new FooMessage()
    def sut = new FooProcessor()
    def builder = Mock(FooBuilder)
    sut.setBuilder(builder)

    when:
    builder.buildFooUsing(_) >> {"bar"}
    def result = sut.process(message)

    then:
    assert result == "bar"
  }
4

2 に答える 2

4

テスト間で単一のオブジェクトを共有する場合は、setupSpec() を使用するか、@Shared アノテーションを確認する必要があります。

于 2011-08-10T12:51:59.223 に答える
1

スポックのドキュメントから

1.3.4反復間のオブジェクトの共有

反復間でオブジェクトを共有するには、 @Shared または static フィールドに保持する必要があります。

注: where: ブロック内からアクセスできるのは、@Shared 変数と静的変数のみです。

このようなオブジェクトは、他のメソッドとも共有されることに注意してください。現在、同じメソッドの反復間だけでオブジェクトを共有する良い方法はありません。これが問題であると考える場合は、各メソッドを個別の仕様に入れることを検討してください。これらはすべて同じファイルに保持できます。これにより、いくつかの定型コードを犠牲にして、より優れた分離が実現されます。

于 2015-03-10T12:35:04.820 に答える