Это метод, который я пытаюсь протестировать -
@Service
public class ShareableLinkService {
private PaymentService paymentService;
@Autowired
public ShareableLinkService(PaymentService paymentService) {
this.paymentService = paymentService;
}
public ResponseEntity<ResponseDTO> cancelSmartPay(Long id, String merchantRefId) {
..
responseDTO = paymentService.processCancelPayment(id, merchantRefId);
..
}
}
И следующий вызываемый метод -
@Service
public class PaymentService {
@Transactional
public ResponseDTO processCancelPayment(Long param, String merchantRefId) {
TransactionRequest transactionRequest = transactionRequestService.findByMerchantIdAndMerchantRefId(param, merchantRefId);
..
}
Ниже приведен мой тестовый код -
@RunWith(MockitoJUnitRunner.class)
public class SmartPayMockitoServiceTest {
@Mock
private PaymentService paymentServiceNew;
when(paymentServiceNew.processCancelPayment(id,merchantRefId)).thenReturn(new ResponseDTO(Constants.API_RESPONSE_SUCCESS, "transaction cancelled"));
when(paymentServiceNew.processCancelPayment(id,merchantRefId)).thenReturn(new ResponseDTO(Constants.API_RESPONSE_SUCCESS, "transaction cancelled"));
assertEquals("1", shareableLinkService.cancelSmartPay(id, merchantRefId).getBody().getStatus().toString());
assertEquals("1", shareableLinkService.cancelSmartPay(payoutMerchantId, merchantRefId).getBody().getStatus().toString());
Когда я запускаю вызов cancelSmartPay () в последнем операторе, он фактически вызывает метод processCancelPayment ().
Я уже проверил Mockito when (). ThenReturn вызывает метод без необходимости
Обновление
Я сделал это в соответствии с ответом @Jalil -
@Mock
private PaymentService paymentService;
@InjectMocks
private ShareableLinkService shareableLinkService;
Тем не менее, фактические методы вызываются. Кроме того, когда я нахожусь в режиме отладки, я получаю java.lang.reflect.InvocationTargetException
.