因此,我有了Grails 3.2.3应用程序,并且在其中一项服务中,我正在加载位于项目文件夹根目录中的WSDL,以便与SOAPClient一起使用,如下所示:
def wsdl = "soap.wsdl"
SOAPClient soapClient
@PostConstruct
void init() {
soapClient = new SOAPClient(wsdl)
}
我的Spock测试使用
@MockFor(MyService)
进行了注释,Ive检查了该测试能否很好地运行init方法。现在,当应用程序运行时,这可以很好地创建SOAPClient,但是当尝试编写Spock测试时,
new SOAPClient(wsdl)
返回null。我猜这是因为运行Spock测试时,wsdl在类路径中不正确,但是我还没有找到解决此问题的方法。有什么想法吗? 最佳答案
如果是我,我将使用metat_code的构造函数metaClass返回SOAPClient
的模拟。像这样:SOAPClient
def 'test something'(){
setup:
def soapClientMock = Mock(SOAPClient)
SOAPClient.metaclass.constructor = {String filename ->
assert filename == "soap.wsdl"
return soapClientMock
}
}
关于web-services - Grails Service Spock测试无法找到文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40985992/