首页 文章

SoapUI Groovy脚本

提问于
浏览
2

我正在尝试读取传入的请求并根据 soapUI 3.0 中请求中的值来设置模拟响应 . 我使用以下groovy脚本 .

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:无法在null对象上调用方法getContentElement()

但我使用类似的代码与 soapUI 2.0 版本,并取得了成功 . 我怎样才能解决这个问题?

2 回答

  • 2

    我知道这个问题已经很老了,但我昨天遇到了同样的问题,这里是我如何设法使用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
    
  • 2

    同样,我很欣赏这是旧的,但Sinnerinc上面的回答并没有解决原来的问题,因为他的解决方案仍然会受到NPE的影响,因为mockRequest为null .

    我有一个相关的问题,并发现this post暗示如果模拟服务从未提供过请求并且您单击绿色三角形按钮来运行脚本,则mockResponse将为null!

相关问题