2014-09-02 58 views
2

我想嘲笑返回void功能:Gmock通話功能兩次

class FileDownloaderMock : public FileDownloader 
{ 
public: 
    MOCK_CONST_METHOD1(downloadFile, 
         void(data *data_ptr)); 

}; 

在測試情況下,我想調用這個函數的2倍,首先應該上升異常,並在第二次應該工作正確。所以我的測試案例看起來像這樣,但不起作用。

TEST_F(BCtrlTargetBdDownloaderTests, DownloaderShouldCorrectlyDownloadTargetBdInFirstAttempt) 
{ 
    EXPECT_CALL(m_fileDownloader, downloadFile(DataReqMatcher(l_expectedReq))).Times(2) 
     .WillOnce(Throw(UpgradeException("Download failed"))); 
    } 

控制檯輸出:

在EXPECT_CALL指定的幾個動作(m_fileDownloader,downloadFile( DataReqMatcher(l_expectedReq)))...預計將調用兩次,但 只有1 WillOnce ()。

那麼我該如何解決這個難題? 問候

回答

2

EXPECT_CALL配置應該像

EXPECT_CALL(m_fileDownloader, downloadFile(DataReqMatcher(l_expectedReq))) 
    .Times(2) 
    .WillOnce(Throw(UpgradeException("Download failed"))) 
    .WillOnce(Return());