我想用spock测试类似的Java方法。
Service apiService;
public List<String> getDataList() {
ResultHolder resultValues = new ResultHolder();
if (apiService.invokeCall(resultValues) == 0){
return Arrays.asList(resultValues.getValue());
}
retrun null;
}
在调用服务后,ResultHolder对象的内部成员将作为结果更改。 我如何(有可能?)在每次调用构造函数时强制spock返回一个模拟对象,以便我可以控制resultValues.getValue()。
在测试环境中,我已经尝试使用groovy间谍,但是在构造ResultHolder时它没有返回相同的实例。
given:
def resultHolder = GroovySpy(ResultHolder, global: true)
resultHolder.getValue() >> ["myValue"]
service.invokeCall(resultHolder) >> 0
when:
result = myServiceImpl.getDataList()
then:
result == expected
当前,由于新构造的ResultHolder的值设置为null,我得到了NPE。