所以我有一个Grails 3.2.3应用程序,在其中一个服务中,我正在加载一个位于我的项目文件夹根目录下的WSDL,用于像这样的SOAPClient:
eventType
我的spock测试用def wsdl = "soap.wsdl"
SOAPClient soapClient
@PostConstruct
void init() {
soapClient = new SOAPClient(wsdl)
}
注释,并且我检查过测试运行init方法。
现在,当应用程序运行时,这会创建SOAPClient,但在尝试编写Spock测试时,@MockFor(MyService)
将返回null。我猜这是因为在运行Spock测试时,wsdl在类路径中没有正确,但我还没有找到解决这个问题的方法。有什么想法吗?
答案 0 :(得分:1)
如果是我,我会metaClass SOAPClient
的构造函数返回SOAPClient
的模拟。像这样的东西:
def 'test something'(){
setup:
def soapClientMock = Mock(SOAPClient)
SOAPClient.metaclass.constructor = {String filename ->
assert filename == "soap.wsdl"
return soapClientMock
}
}