我是spock的新手并注意到了设置:规范中的步骤是针对特定测试的本地范围。我如何在这些灯具上共享设置,类似于传统的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"
}
答案 0 :(得分:4)
如果要跨测试共享单个对象,则应使用setupSpec()或查看@Shared注释
答案 1 :(得分:1)
来自Spock文档
1.3.4 在迭代之间共享对象
为了在迭代之间共享对象,它必须保存在@Shared或静态字段中。
注意:只能从a中访问@Shared和静态变量 其中:block。
请注意,此类对象也将与其他方法共享。目前没有好方法来共享对象 在相同方法的迭代之间。如果您认为这是一个问题,请考虑将每个方法单独放在一起 spec,所有这些都可以保存在同一个文件中。这样可以以某些样板代码为代价实现更好的隔离。