次のコード部分をテストしようとしています。特にキャッチ:私はしたいcatch節を入力してテストする方法。 Springブート、Junit、Mockito
try {
preAuthCompleteResponse = preAuthCompleteClient
.getPreAuthCompleteResponse(preAuthCompleteServiceImpl.getPreAuthComplete(
preAuthCompleteRequestServiceImpl.getPreAuthCompleteRequest(preAuthCompleteModel)));
} catch (IOException | MarshalSendAndReceiveException e) {
logger.error(e.getMessage(), e);
return new ResponseEntity<>(
new SvsTransactionResponseModel(HttpStatus.BAD_REQUEST, e.getMessage()),
HttpStatus.BAD_REQUEST);
}
テスト1でIOException
がcatchedされていることを期待し、他のテストでは、私はMarshalSendAndReceiveException
がcatchedされることを期待したいです。どちらもステータスHttpStatus.BAD_REQUEST
のSvsTransactionResponseModel
を返します。
preAuthCompleteClient.getPreAuthCompleteResponse
メソッドは、MarshalSendAndReceiveException
とpreAuthCompleteRequestServiceImpl.getPreAuthCompleteRequest
がIOException
をスローするようにスローします。
私のテストは、次のようになります。
@RunWith(MockitoJUnitRunner.class)
public class PreAuthCompleteControllerTest {
@Mock
private PreAuthCompleteService preAuthCompleteServiceImpl;
@Mock
private PreAuthCompleteRequestService preAuthCompleteRequestServiceImpl;
@Mock
private PreAuthCompleteClient preAuthCompleteClient;
@Mock
private Errors errors;
private PreAuthCompleteController preAuthCompleteController;
@Before
public void setUp() {
preAuthCompleteController = new PreAuthCompleteController(preAuthCompleteServiceImpl,
preAuthCompleteRequestServiceImpl, preAuthCompleteClient);
}
@Test
public void testGetPreAuthCompleteExpectIOException() throws MarshalSendAndReceiveException, IOException {
when(preAuthCompleteClient.getPreAuthCompleteResponse(preAuthCompleteServiceImpl.getPreAuthComplete(
preAuthCompleteRequestServiceImpl.getPreAuthCompleteRequest(new PreAuthCompleteModel()))))
.thenReturn(new PreAuthCompleteResponse());
ResponseEntity<SvsTransactionResponseModel> responseEntity = (ResponseEntity<SvsTransactionResponseModel>) preAuthCompleteController
.getPreAuthComplete(null, errors);
assertTrue(responseEntity.getBody() != null);
assertTrue(responseEntity.getStatusCodeValue() == 400);
}
}
私はそうでMockito.when、Mockito.thenThrowまたはdoThrowを使用して別の解決策を試してみました。しかし、異なる例外や不成功なテストがあります。私はアイデアがありません。
例外がキャッチされ、ResponseEntityが正しく返されることをどのようにテストできますか。
P.S.すべての模擬設定が動作します。ダウンその構成部分に私はこの呼び出しを破った事の意味を作るために
感謝;) – Patrick