我正在嘗試使用 ArgumentCaptor 測驗提供給 void 方法的引數的變化。但我無法做到這一點。有人可以幫我找出我到底做錯了什么。使用除錯我知道串列大小增加了。
@InjectMocks private AuthValidationHelper authValidationHelper;
@Test
public void isAuthExpired(PaymentMethod paymentMethod, List<Error> errorList) {
PaymentDetails paymentDetails = paymentMethod.getPaymentDetails();
Date authExpirationTime = paymentDetails.getAuthorizationExpirationDate();
boolean isAuthExpired = new Date().after(authExpirationTime);
log.info("START : isAuthExpired for requestId: {}", paymentDetails.getRequestId());
if (isAuthExpired) {
log.info("START : validateOrderTotalAmount for result: {}", false);
errorList.add(new Error(String.valueOf(PaymentErrorCodes.AUTH_EXPIRED),
PaymentErrorCodes.AUTH_EXPIRED.getDescription()));
}
}
這里引數為空。
@Test
public void test_isAuthExpired_ExpiredAuth() throws ParseException {
List<Error> list = new ArrayList<>();
String request = inputProvider.createValidCreateOrderRequest_1();
PaymentTriggerBaseModel baseModel =
ParserUtil.getObjectFromString(request, PaymentTriggerBaseModel.class);
authValidationHelper.isAuthExpired(baseModel.getPayment().getPaymentMethods().get(0), list);
ArgumentCaptor<Error> captor = ArgumentCaptor.forClass(Error.class);
final List<Error> params = captor.getAllValues(); --// here params are null
//assertTrue(params.get(0).getField().equalsIgnoreCase(0));
}
uj5u.com熱心網友回復:
你應該首先驗證這個論點..像這樣
List<Error> listMock = mock(List.class);
authValidationHelper.isAuthExpired(mock(PaymentMethod.class), listMock);
ArgumentCaptor<Error> captor = ArgumentCaptor.forClass(Error.class);
verify(listMock).add(captor.capture());
final List<Error> params = captor.getAllValues();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/512519.html
