【发布时间】:2015-01-02 04:51:58
【问题描述】:
我想在我的单元测试中使用 gmock。我写了一个非常简单的例子,但它失败了。 ISymbolTable 是我想模拟的接口。 MockSymbolTable 是模拟对象。在测试中我调用 insert 并检查是否调用了任何插入。
GMOCK 警告:
无趣的模拟函数调用 - 直接返回。函数调用: 插入(8 字节对象 )堆栈跟踪: LexerTests.cpp:25:失败实际函数调用计数不匹配 EXPECT_CALL(symbolTable, insert(::testing::_))...
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 值传递参数
标签: c++ unit-testing mocking gmock