私は以下のテクニックを使用して、自分のモックサービスメソッドの呼び出しパラメータをテストします。これを行うには、より良い方法や最新の方法がありますか?Mockito javaのメソッド呼び出しパラメータをアサートする最新かつより良い方法は?
@Test
public void testSendOutBidNotificationWhenCurrentBidderIsNotNullAndDifferentThenUserWithBidDifferenceNonZero(){
Event event = new Event();
event.setCurrency(Currency.USD);
Item item = new Item();
item.setCode("TST");
User user = new User("[email protected]", 8888888888L);
User currentHighBidder = new User("[email protected]", 9999999999L);
item.setCurrentHighBidder(currentHighBidder);
doReturn(10).when(itemService).getBidIncrement(any(), any());
ArgumentCaptor<TextMessage> textMessageCaptor = ArgumentCaptor.forClass(TextMessage.class);
textMessagePrepareService.sendOutBidNotification(event, item, user, 20, currentHighBidder);
verify(textMessageService).sendText(textMessageCaptor.capture());
assertEquals("You have been outbid for item TST. The new bid is $20, so you need to bid $10 more than that to win the item. For example: TST$30",
textMessageCaptor.getValue().getMessage());
}
ここでは、sendTextメソッドのパラメータとして使用されるTextMessageをキャプチャし、以前に構築される値をテストします。テスト中の
方法は
public void sendOutBidNotification(Event event, Item item, User user, int bidAmount, User currentHighBidder){
if (currentHighBidder != null && !currentHighBidder.equals(user)) {
log.info("Outbid person different: " + currentHighBidder);
try {
int bidIncrement = itemService.getBidIncrement(item, eventService.getAuction(event));
Map<String, String> params = new HashMap<String, String>();
params.put("increment", String.valueOf(bidIncrement));
params.put("required", String.valueOf(bidAmount + bidIncrement));
params.put("amount", String.valueOf(bidAmount));
params.put("item_code", item.getCode());
params.put("currency_symbol", event.getCurrency().getSymbol());
String loserMessage = this.getLooserOutBidNotificationMessage(bidIncrement, params);
TextMessage textMessage = new TextMessage(loserMessage, event.getAePhoneNumber(), currentHighBidder, loserMessage);
textMessageService.sendText(textMessage);
} catch (Exception e) {
log.error("Exception Occurred : " + e);
e.printStackTrace();
}
}
}
あなたがやっていることは、まったく問題ありません。 'ArgumentCaptor'の使用を避けたいのであれば、その引数に' getMessage'を呼び出す 'Matcher'を書くことができますが、実際には何の意味もありません。 –