2009-11-24 172 views
2

我試圖讀取傳入的請求&根據請求中的值soapUI 3.0設置模擬響應。爲此,我使用以下groovy腳本。SoapUI 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:不能空對象

上調用方法getContentElement(),但我已經使用了類似的一種代碼soapUI 2.0版本和成功。我怎樣才能解決這個問題?

回答

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爲空。

我有一個相關的問題,發現this post這表明如果模擬服務從未提供請求,並且您單擊綠色三角形按鈕運行腳本,則mockResponse將爲null!

相關問題