2016-12-06 48 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 
    } 
} 

相關問題