0

私が取り組んでいるアプリケーションでは、Web サービスからいくつかのデータを消費し、処理してから、フロントエンドに送信する必要があります。今、フロントエンドに送信された値の正確性をチェックする必要がある統合テストを作成しようとしています。

次のようにして、アプリケーション コンテキストを読み込むことができました。

@Inject
private WebApplicationContext wac;

@BeforeMethod
public void setup() throws Exception {
    MockitoAnnotations.initMocks(this);
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac)
        .addFilters(this.springSecurityFilterChain).build();
}

その後、次のようなことをすると:

mockMvc.perform(get("/url"))
    .andDo(print())
    .andExpect(status().isOk())

それは非常にうまく機能し、ブラウザからの応答と同じ応答が得られます。

他の API からのデータを使用するには、RestTemplate.getForObjetctメソッドを使用します。そこで、このメソッドの呼び出しをインターセプトして、答えをモックする方法はないかと考えています。

4

2 に答える 2

0

いくつかの新しいクラスを作成RestTemplateWrapperRestTemplateWrapperFactoryます。前者には内部があり、対話したいRestTemplate部分を公開するだけです。をインスタンス化するには、.RestTemplategetForObjectRestTemplateWrapperRestTemplateWrapperFactory

現在、オブジェクトを作成するすべてのクラスをRestTemplateリファクタリングして、 の注入を許可し、作成RestTemplateWrapperFactoryしたオブジェクトとのみ対話するRestTemplateWrapper必要があります。

テストするときは、Mockito や EasyMock などのモッキング フレームワークを使用して mock を作成し、RestTemplateWrapperFactoryそれをスタブして、RestTemplateWrapper必要な動作で のモックを作成しますgetForObjectRestTemplateWrapperFactory次に、テストするクラスにモックを挿入します。

于 2013-08-29T23:21:45.700 に答える