【发布时间】:2018-04-13 13:29:44
【问题描述】:
我有以下 Java 类:
public class FooServiceImpl {
private BarService barService;
public String generateFoo() {
String barValue = barService.generateBar();
return customFoo() + barValue;
}
public String customFoo() {
return "abc";
}
}
这里是典型的 Spock 测试方法:
def "generate foo bar"() {
setup:
def barService = Mock(BarService) {
generateBar() >> "Bar"
}
FooServiceImpl spyFooService =
Spy(FooServiceImpl, constructorArgs: [[barService: barService]])
spyFooService.customFoo() >> "foo"
when:
def fooValue = spyFooService.generateFoo()
then:
fooValue == "fooBar"
}
我尝试为 FooServiceImpl 类创建 Spy 对象,但出现以下错误:
org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack:
No such property: barService for class:
com.foo.FooServiceImpl$$EnhancerByCGL`
我无法将构造函数添加到FooServiceImpl 或BarService 的设置器,所以我想使用映射构造函数。这可能吗?
注意:根据this issue 它应该可以工作
【问题讨论】: