2017-07-06 2 views
0

アプリケーションでコンポーネントテストを実行できるように、Webサーバーからアプリケーションに返された応答をスタブしようとしています。 私は、XMLに基づいてレスポンスを作成するためにrequestFactoryを消費したいRestTemplate XMLを持っています。 XMLの例は以下の通りです。この目的のためにMockClientHttpRequest/ResponseでRestTemplate xmlファイルを使用する方法

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<rates-file xmlns="http://www.example.com/schema/rates-file"> 
    <timestamp>2017-06-30T14:20:21.768+10:00</timestamp> 
    <daily-rates-updated>true</daily-rates-updated> 
    <number-of-records>96</number-of-records> 
    <rate> 
     <transaction-type>transaction</transaction-type> 
     <product-code>product</product-code> 
     <code>code</code> 
     <description>description</description> 
     <rate>2.6154</rate> 
    </rate> 

    <number-of-records>96</number-of-records> 
    <rate> 
     <transaction-type>transaction2</transaction-type> 
     <product-code>product2</product-code> 
     <code>code2</code> 
     <description>description2</description> 
     <rate>2.6154</rate> 
    </rate> 
    ... 

私はMockClientHttpRequestMockClientHttpResponse(春・テストの一部)を使用しています。 MockClientHttpRequestはこのXMLを消費し、結果的に私の応答を生成しますか?

EDIT:はただ、これは私が私のXMLに直接しようとしているコードの一部です明確にする:

public RatesFile fetchRatesFile() { 
... 
try { 
... 
    **ratesFile = restTemplate.postForObject(exampleUrl, variables, RatesFile.class);** 
... 
} 

return ratesFile; 

}代わりにpostForObjectメソッドをオーバーライドするの

、私はしたいと思いますRequestFactoryを書き、XMLを使用してHttpMethod.POSTリクエストに応答します。

+0

何が原因で応答が生成されますか?要求XMLは静的です。あなたの応答はどのように見えますか? –

+0

XMLには一連の静的データが含まれています。私はそれらを変更する必要はありません、私はちょうど実際のサーバーと同じようにアプリケーションに送信する必要があります。 – SSF

+0

「アプリケーションに送信するだけでいいですか?」という応答を送信することを意味しますか?またはリクエスト? テストしようとしているコードを表示します。あなたの質問に私がそれに答えるのに十分な情報がありません。 –

答えて

1

私はRestTemplateを使用していません。その場合は、Prodコードをテストしていないためです。私がやることは、私のテストではexampleUrlをオーバーライドし、それに応答するエンドポイントに立つことです。

  1. 春ブーツを使用している場合は、単にexampleUrl=http://localhost:8080/testを設定する@SpringBootTestproperties属性を使用します。ここでは方法です。その場合は@DirtiesContextにも投げてください。それ以外の場合は、src/test/resourcesディレクトリにapplication.propertiesを作成し、そのプロパティを配置します。
  2. は今、どちらかあなたは/testにマッピングされた方法で、OR
  3. あなたは缶詰の応答を返すように設定することができますモックWebサーバーを使用しているテストパッケージに@RestControllerを作成することができます。 2つの最も人気のあるものは、#2、#3のいずれかを使用してWireMockMockServer

ている、あなたは、HTTPリクエストを受信し、それに基づいてしたいものは何でも応答を返すことができます。

+0

あなたの助けを借りて非常に良いソリューションありがとうございます。 – SSF

+0

私はあなたのソリューションをまだ使用していませんが、一部の人と話すことは良い選択肢のようです。他の誰かがこのソリューションを採用している場合は、詳細を記入してください。ご協力いただきありがとうございます。 – SSF

+0

@SSF「他の誰かが解決策を採用した場合」とは何を意味するのかよく分かりません。私たちはコード内でこのテクニックを常に使用しています.AFAIKもSpringチームもそうです。ロケット科学ではありません。テストするためのコードを変更したくないので、外部の依存関係を模擬します。 –

関連する問題