2011-08-10 95 views
5

我是新來的斯波克和注意的設置:步驟是在規範範圍的局部的,具體的測試。我如何可以像這種傳統的junit方法一樣在這些燈具上分享設置?如何分擔使用斯波克框架多個測試設置W /常規

謝謝!

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

您應該使用setupSpec()或看@Shared註釋,如果你想分享整個測試單個對象

1

從斯波克文檔

1.3.4迭代的對象共享

爲了在迭代之間共享對象,它必須保存在@Shared或靜態字段中。

注意:只有@Shared和靜態變量可以從 其中訪問:block。

請注意,這些對象也將與其他方法共享。目前沒有好的方法在同一方法的迭代之間共享僅有 的對象。如果您認爲這是一個問題,請考慮將每種方法放入單獨的 規範中,所有這些規範都可以保存在同一個文件中。這樣可以以某些樣板代碼爲代價實現更好的隔離。

相關問題