Groovy 无法存根@共享字段
我是斯波克的新手,尝试用一些简单的模拟和存根进行实验。在玩的时候,我注意到我不能存根或模拟@Shared字段。我在文件中找不到任何这样的提及。setupSpec()或setup()的工作方式中是否有我遗漏的东西 这应该起作用:Groovy 无法存根@共享字段,groovy,spock,Groovy,Spock,我是斯波克的新手,尝试用一些简单的模拟和存根进行实验。在玩的时候,我注意到我不能存根或模拟@Shared字段。我在文件中找不到任何这样的提及。setupSpec()或setup()的工作方式中是否有我遗漏的东西 这应该起作用: class MySpecification extends Specification { @Shared MyPojo pojo = Mock(MyPojo) def setupSpec(){ pojo.getValue() >
class MySpecification extends Specification {
@Shared MyPojo pojo = Mock(MyPojo)
def setupSpec(){
pojo.getValue() >> "foobar"
}
def "example 1"(){
expect:
pojo.getValue() == "foobar"
}
}
class MyPojo {
public String value ;
public String getValue(){
return value ;
}
}
编辑:
这也将有助于:
class MySpecification extends Specification {
@Shared MyPojo pojo = Mock(MyPojo) {
getValue() >> 'foobar'
}
def "example 1"(){
expect:
pojo.getValue() == "foobar"
}
}
Spock不支持这一点,请阅读了解更多信息
将mock/stub定义为
@Shared
没有任何好处。此外,如果可以,您应该避免@Shared
,因为中断测试隔离。仅将其用于成本高昂的创建,并尽量避免对其进行变异。我更感兴趣的是它为什么不起作用。这和斯波克的工作方式有关吗?“我更感兴趣的是为什么它不工作。”-我错了。我只是重读了你的问题,我发现你没有问怎么做。请不要理会,我为这噪音道歉。
class MySpecification extends Specification {
@Shared MyPojo pojo = Mock(MyPojo) {
getValue() >> 'foobar'
}
def "example 1"(){
expect:
pojo.getValue() == "foobar"
}
}