我想在我的單元測試中使用gmock。我寫了一個非常簡單的例子,它失敗了。 ISymbolTable是我想要模擬的接口。 MockSymbolTable是模擬對象。在測試中,我調用插入並檢查是否調用了任何插入。gmock忽略「有趣」的函數調用
GMOCK警告:
無趣模擬函數調用 - 直接返回。函數調用: 插入(8字節對象< 24-7C 4C-04 03-00 00-00>)堆棧跟蹤: LexerTests.cpp:25:失敗實際函數調用計數不匹配 EXPECT_CALL(symbolTable,insert (::測試:: _))...
class ISymbolTable {
public:
ISymbolTable() {}
virtual ~ISymbolTable() {};
virtual void insert(const Entry entry) = 0;
virtual int lookUp(const std::string text) = 0;
};
class MockSymbolTable : public ISymbolTable {
public:
MOCK_METHOD1(insert, void(const Entry entry));
MOCK_METHOD1(lookUp, int(const std::string text));
};
TEST(Lexer, N) {
MockSymbolTable symbolTable;
symbolTable.insert(Entry("dsgft", 3));
EXPECT_CALL(symbolTable, insert(::testing::_)).Times(1);
}
無關,您應該通過const引用('const&')傳遞參數而不是const值 – 2014-11-05 20:52:36