2014-09-02 72 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());