【发布时间】:2015-01-16 15:36:43
【问题描述】:
我看到了一些关于 gmock 的示例代码,
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include <stdio.h>
#include <string>
class MockFoo {
public:
MockFoo() {}
MOCK_METHOD3(Bar, char(const std::string& s, int i, double x));
MOCK_METHOD2(Bar2, bool(int x, int y));
MOCK_METHOD2(Bar3, void(int x, int y));
private:
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo);
};
class GMockOutputTest : public testing::Test {
protected:
MockFoo foo_;
};
TEST_F(GMockOutputTest, ExpectedCall) {
testing::GMOCK_FLAG(verbose) = "info";
EXPECT_CALL(foo_, Bar2(0, _));
foo_.Bar2(0, 0); // Expected call
testing::GMOCK_FLAG(verbose) = "warning";
}
模拟类 MockFoo 正在模拟类主体中的三个函数,但类 MockFoo 不继承任何类。
如果我理解正确的话,mock 类可以模拟虚函数和非虚函数。
1) 模拟虚函数:模拟类应该继承一个被模拟的基类,并且该类中的所有函数都应该是虚拟的,但是在这个例子中,没有基类。
2) 模拟非虚函数:模拟类不需要继承任何类,但需要在代码中添加模板才能使用高性能依赖注入。
上面的代码是否属于任何一种情况?它试图嘲笑什么?又该如何理解?
【问题讨论】:
标签: c++ unit-testing googletest googlemock