6

私は SoapUI を初めて使用し、非常に単純な MockService を構成しました。特定のリクエストに対してレスポンスの要素が動的に構築されるようにレスポンスを操作することは可能ですか?

シナリオ 1:

リクエスト:

<record>
  <identifier>ID1</identifier>
</record>

応答:

<response>
  <child1>child 1</child1>
</response>

シナリオ 2:

リクエスト:

<record>
  <identifier>ID2</identifier>
</record>

応答:

<response>
  <child2>child 2</child2>
</response>

これは単純なテスト用であり、上記以外のことを行う必要はありません。私は現在、私が望む結果をもたらす次のことを行っていますが、私はこれに完全に慣れていないので、より良い代替手段があると確信しています:

応答:

<response>
  ${dynElement}
</response>

グルーヴィーなスクリプト:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
def reqRef = String.valueOf(holder.getNodeValue("//identifier"))

def child1Text = "<child1>child 1</child1>"
def child2Text = "<child2>child 2</child2>"

if (reqRef == "ID1") {
  context.setProperty("dynElement", child1Text)
} else if (reqRef == "ID2") {
  context.setProperty("dynElement", child2Text)
}
4

2 に答える 2

3

xpath の代わりに、XmlSlurper を使用することもできます。

def req = new XmlSlurper().parseText(mockRequest.requestContent)
def reqRef = req.record.identifier

この質問の回答から恥知らずに引き裂かれましたが、私を傷つけないでください。

于 2010-11-23T19:16:40.000 に答える
2

私は「定型応答」とxpathクエリでそれを行います。これを行うには、mockserviceに一連のディスパッチハンドラーを設定して、要求と応答を一致させます。Request1、Request2、Response1、Response2があるとします。「QueryMatch」ディスパッチメソッドを使用して、XPATH式を照合します。その一致で、目的の応答を返します。つまり、xpathでID1が見つかった場合は、既定のResponse1を返します。

また、PROバージョンはXPATHで優れた機能を発揮するため、手動でコーディングする必要はありません。つまり、トリガーしたいもの(この場合はID1)の応答クリックを確認し、XPATH式を作成します。それに基づいて、PROライセンスをリクエストしました。現在予算を待っています...

IMO、グルーヴィーなものを理解するよりもはるかに簡単に始めることができます。

クリス

于 2010-06-03T15:53:56.147 に答える