[英]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);
...
}
錯誤
想要 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() 現在為空。 這是因為模擬 when() 沒有第二次應用嗎?
直接在 PaymentsApi 對象上應用 @Test 中的 when() 語句。
when(paymentsApi.getPayment("p1")).thenReturn(VALID_PAYMENT_RESPONSE);
使用“when()”時不能鏈接方法調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.