Gmock调用函数两次

时间:2014-09-02 16:32:31

标签: c++ unit-testing googletest

我想模拟返回void的函数:

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()。

那我怎么解决这个难题呢? 最诚挚的问候

1 个答案:

答案 0 :(得分:3)

您的EXPECT_CALL配置应该是

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