为什么 mockito 认为我的服务被调用了两次?

Why does mockito think my service is being called twice?

我在使用 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);
    ...
}

错误

Wanted 1 time: at com.squareup.square.SquareClient.getPaymentsApi(SquareClient.java:239) But was 2 times:

好像还可以,但是当你看到两个电话是从哪里来的。 . 一个在服役,

Payment payment = squareClient.getPaymentsApi().getPayment(paymentId).getPayment();

和测试中的一个。为什么这个在这里?

when(squareClient.getPaymentsApi().getPayment("p1")).thenReturn(VALID_PAYMENT_RESPONSE);

我的问题

直接在 PaymentsApi 对象上应用 @Test 中的 when() 语句。

when(paymentsApi.getPayment("p1")).thenReturn(VALID_PAYMENT_RESPONSE);

使用 "when()" 时不能链接方法调用。