因此,我有了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/

10-10 03:55