以下のメソッドのmockito junitの書き方:
@Autowired
RestTemplate restTemplate;
ResponseEntity<?> execute(final String url, HttpMethod httpMethod,
HttpEntity<?> entityRequest,
String.class,
Map<String, String> urlVariables){
restTemplate.exchange(url, httpMethod, entityRequest, responseType, urlVariables);
}
書き方を教えてください。
@RunWith(MockitoJUnitRunner.class)
public class ToTestTest {
@InjectMocks
private YourClass toTest;
@Mock
private RestTemplate template;
@Test
public void test() {
toTest.execute(Mockito.anyString(), Mockito.any(), Mockito.any(),
Mockito.any(), Mockito.any());
Mockito.verify(template, Mockito.times(1))
.exchange(Mockito.anyString(),
Mockito.<HttpMethod> any(),
Mockito.<HttpEntity<?>> any(),
Mockito.<Class<?>> any(),
Mockito.<String, String> anyMap());
}
}
この場合の最も便利で適切なアプローチ(クライアント側REST RestTemplate
を使用したテスト)は MockRestServiceServer
Spring Testing フレームワークによって提供されます。
それはあなたが望むものに依存します。
モックを使用する1つの方法は、execute
メソッドの呼び出しを簡単にすることです。そのために、HttpMethod
やHttpEntity
などの実際のパラメーターのモックバージョンを使用できます。基礎となるexchange
メソッドがこれらのパラメーターから特定の動作を必要とする場合、mockitoのwhen
... thenReturn
メソッドでスタブする必要があるかもしれません。
execute
メソッドを呼び出すことができるように、これらの模擬パラメーターがセットアップされたら、その結果が正しいことを確認する必要があります。
返された値を確認するには、従来のJUnitアサーションを使用できます。
さらに、特定のinteractionsがモックされたオブジェクトと実際に行われたことを確認することもできます。そのためには、mockitoのverify
メソッドを使用して、たとえば、いくつかのHttpEntity
メソッドが実際に呼び出されることを確認できます。
技術的には、restテンプレートのexchange
メソッドが呼び出されることを確認することもできます。そのためには、RestTemplateをモックし、テスト対象のクラスにモックを挿入する必要があります。その後、mockitoのverfiy
を使用して、exchange
が適切な方法で呼び出されることを確認できます。これは通常、特にテスト対象のクラスでテストするメソッドがさらにある場合に実行するのが賢明なことです。しかし、現在のexecute
メソッドでは、少しやり過ぎに見えます。