2017-05-03 38 views
1

我想用mockito的ArgumentCaptor類來捕獲一些參數,然後對它做一些驗證。但它拋出了一個例外。Mockito拋出InvalidUseOfMatchersException與ArgumentCaptor

這是打印的錯誤信息。

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 參數匹配器的使用無效! 0 matchers expected,1 records:

下面是拋出異常的代碼。

//Arrange 
    int amount = 100; 

    DonationTransaction transaction = getPendingTransaction(player, amount); 
    when(mockDonationTransactionDAO.getPendingTransactions(player)).thenReturn(Arrays.asList(transaction)); 

    ArgumentCaptor<DonationAttribution> argumentCaptor = ArgumentCaptor.forClass(DonationAttribution.class); 

    //Act 
    donationService.applyPendingDonations(player, playerDTO); 

    //Assert 
    verify(mockDonationAttributionDAO).save(argumentCaptor.capture()); //Exception here 
    ... 

我正在使用Junit5和mockito版本2.7.22。

不知道我是否在這裏丟失了一些明顯的東西。

我的DonationAttributeDao擴展了一個抽象DAO,如果這對任何事情都有幫助,並且save方法在抽象類中定義,那麼抽象類需要將參數作爲參數來捕獲我想要捕獲的參數。

+0

'donationAttributionDAO'是一個模擬嗎? –

+0

是的。這是一個模擬。我會編輯我的問題,使其更清晰。 – Sneh

+0

save()方法是抽象還是最終的?在這種情況下,你不能嘲笑它使用Mockito,你會得到各自的異常:http://stackoverflow.com/questions/11458963/mockito-0-matchers-expected-1-recorded-invaliduseofmatchersexception –

回答

相關問題