2016-12-06 9 views
0

Итак, у Ive есть приложение Grails 3.2.3, и в одной из служб я загружаю WSDL, расположенный в корневой папке моего проекта, для использования с SOAPClient следующим образом:Служба Grails Spock test can not find file

def wsdl = "soap.wsdl" 

    SOAPClient soapClient 

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

Мой тест-спот аннотируется с номером @MockFor(MyService), и Ive проверил, что проверка выполняется методом 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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^