なぜmockitoは私のサービスは二回呼び出されていると思うのでしょうか?

Kaigo :

私は、モックメソッドの呼び出しの数を確認するために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);
    ...
}

エラー

com.squareup.square.SquareClient.getPaymentsApi(SquareClient.java:239)ででも2倍であった:1時間を募集:

だと罰金だが、あなたが見たときに2つの呼び出しが来るから。一つはサービスであり

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

そして、テストで1なぜ、この1はここですか?

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

私の問題

  • まず、1つのだけの呼び出しがあるはずです。

  • 第二に、私は2回をチェックしたときにverify(squareClient, times(2)).getPayment("p1")私が取得ヌルポインタを getPaymentsApiは()今nullであるため。ときモック()は二度目を適用していないためですか?

トム・クールス:

PaymentsApiオブジェクトに直接@Testであなたの()文を適用します。

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

「いつ()」を使用するときは、あなたのメソッドの呼び出しをチェーンすることはできません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=378829&siteId=1