У меня возникли проблемы с использованием mockito для проверки количества обращений к ложному методу.
Это мой тест
@Mock
private SquareClient squareClient;
@Mock
private PaymentsApi paymentsApi;
@Test
public void testBlah() throws Exception {
...
when(squareClient.getPaymentsApi().getPayment("p1")).thenReturn(VALID_PAYMENT_RESPONSE);
sut.process(EXAMPLE_PAYLOAD);
verify(squareClient).getPaymentsApi().getPayment("p1"); //<--------------error here
}
Это мой метод установки
@Before
public void setup() {
...
when(squareClient.getPaymentsApi()).thenReturn(paymentsApi);
...
}
Ошибка
Требуется 1 раз: в com.squareup.square.SquareClient.getPaymentsApi (SquareClient. java: 239) Но было 2 раза:
Это нормально, но когда вы видите, как поступают два звонка. , один в сервисе ,
Payment payment = squareClient.getPaymentsApi().getPayment(paymentId).getPayment();
и один в тесте . Почему этот здесь?
when(squareClient.getPaymentsApi().getPayment("p1")).thenReturn(VALID_PAYMENT_RESPONSE);
Мои проблемы
Во-первых, должен быть только 1 звонок.
Во-вторых, когда я проверяю 2 раза verify(squareClient, times(2)).getPayment("p1")
, я получаю нулевой указатель , потому что getPaymentsApi () теперь является нулевым. Это из-за того, что mock when () не применяется второй раз?