Groovy-скрипты SoapUI

Я пытаюсь прочитать входящий запрос и установить фиктивный ответ в зависимости от значения, поступающего в запросе в soapUI 3.0. Для этого я использую следующий отличный скрипт.

def typeElement = mockRequest.getContentElement().execQuery("//ProductType");
def records =  new XmlParser().parseText(typeElement[0].xmlText())
if (records.text()=="15"){
    mockOperation.setDefaultResponse("Response 2");
} else {
    mockOperation.setDefaultResponse("Response 1");
}

Но это не работает, жалуясь, что объект mockRequest равен нулю:

com.eviware.soapui.impl.wsdl.mock.DispatchException: не удалось отправить с помощью скрипта; java.lang.NullPointerException: невозможно вызвать метод getContentElement() для нулевого объекта

но я использовал аналогичный код с версией soapUI 2.0 и был успешным. Как я могу это исправить?


person Priyal85    schedule 24.11.2009    source источник


Ответы (3)


Я знаю, что этот вопрос довольно старый, но вчера я столкнулся с той же проблемой, и вот как мне удалось отправить ответы с помощью скрипта groovy (обратите внимание, я впервые использовал и soapUI, и groovy, поэтому, вероятно, будут лучшие способы сделать это).

    // define request
    def request = new XmlSlurper().parseText(mockRequest.requestContent);
    def resultingResponse = "none"

    //when missing password
    def Password = request.Body.CreateUser.user.Password
    if(Password == '') {
        resultingResponse = 'MissingPassword'
    }

    //when missing firstname
    def Firstname = request.Body.CreateUser.user.FirstName
    if(Firstname == '') {
        resultingResponse = 'MissingFirstname'
    }

context.ResultResponse = resultingResponse
person sinnerinc    schedule 25.08.2010

Опять же, я понимаю, что это устарело, но ответ Sinnerinc выше не решает исходную проблему, потому что его решение по-прежнему будет страдать от NPE, потому что mockRequest был нулевым.

У меня есть связанная проблема, и я нашел это сообщение, в котором предполагается, что mockResponse будет нулевым, если фиктивная служба никогда не обслуживала запрос, и вы нажимаете кнопку с зеленым треугольником для запуска сценарий!

person DarthPablo    schedule 27.09.2012

В SmartBear Forum, зеленая кнопка "воспроизведение" выводит предупреждение "mockRequest is Null", поскольку объект фиктивного запроса не определен.

Объект mockRequest определяется, когда «настоящий» тест выполняет конечную точку MockService.

Чтобы протестировать код, я помещаю следующий тестовый код и нажимаю «играть», пока не буду доволен своим покрытием.

Затем я отправляю тестовый шаг для вызова конечной точки MockService.

Вот код:

def mockRequestrequestContent = "" 
if (mockRequest != null) 
    mockRequestrequestContent = mockRequest.requestContent
else 
    mockRequestrequestContent = "<testRequestXmlOrJson/>" 
log.info(mockRequestrequestContent) 

//begin script like @sinnerinc's above

Примечание. Текущая версия SoapUI 5.50 не имеет окна журнала внизу, поэтому сбор информации затруднен.

person OzBob    schedule 19.02.2019