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しかし、オブジェクトがnullであると不平を言って、うまくいきません:

com.eviware.soapui.impl.wsdl.mock.DispatchException: スクリプトを使用してディスパッチできませんでした。java.lang.NullPointerException: null オブジェクトでメソッド getContentElement() を呼び出せません

soapUI 2.0しかし、バージョンで同様の種類のコードを使用して成功しました。どうすればこれを修正できますか?

4

3 に答える 3

2

繰り返しますが、これは古いと思いますが、上記の Sinnerinc の回答は元の問題を解決しません。mockRequest が null であったため、彼の解決策は依然として NPE に悩まされるためです。

関連する問題があり、モック サービスがリクエストを処理したことがなく、緑色の三角形のボタンをクリックしてスクリプトを実行すると、mockResponse が null になることを示唆するこの投稿を見つけました。

于 2012-09-27T14:19:45.553 に答える
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
于 2010-08-25T08:18:30.883 に答える