Grails服务Spock测试无法找到文件

时间:2016-12-06 00:48:53

标签: web-services grails wsdl spock

所以我有一个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在类路径中没有正确,但我还没有找到解决这个问题的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果是我,我会metaClass SOAPClient的构造函数返回SOAPClient的模拟。像这样的东西:

def 'test something'(){
    setup:
    def soapClientMock = Mock(SOAPClient)
    SOAPClient.metaclass.constructor = {String filename ->
        assert filename == "soap.wsdl"
        return soapClientMock
    }
}