2016-12-06 47 views
0

因此,我得到了一个Grails 3.2.3应用程序,并且在其中一个服务中,我加载了位于我的项目文件夹根目录中的WSDL,以便与SOAPClient一起使用,如下所示:Grails服务Spock测试找不到文件

def wsdl = "soap.wsdl" 

    SOAPClient soapClient 

    @PostConstruct 
    void init() { 
     soapClient = new SOAPClient(wsdl) 
    } 

我的spock测试用@MockFor(MyService)进行了注释,并且我检查了测试运行的init方法正常。

现在,当应用程序运行时,这会创建SOAPClient就好了,但是当试图编写Spock测试时,new SOAPClient(wsdl)将返回null。我猜这是因为在运行Spock测试时,wsdl在类路径中没有正确使用,但我还没有找到解决此问题的方法。请有任何想法吗?

回答

1

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

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

相关问题