2011-08-10 51 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。

请注意,这些对象也将与其他方法共享。目前没有好的方法在同一方法的迭代之间共享仅有 的对象。如果您认为这是一个问题,请考虑将每种方法放入单独的 规范中,所有这些规范都可以保存在同一个文件中。这样可以以某些样板代码为代价实现更好的隔离。

相关问题