【发布时间】:2018-05-25 05:34:13
【问题描述】:
我在使用 Gmock 进行 UpCasting 时遇到了问题
#include "gtest/gtest.h"
#include "gmock/gmock.h"
using namespace testing;
using namespace std;
class MyClass {
public:
MyClass(int xxx) {}
int call(int x) {
};
};
class MockMyClass : public MyClass {
public:
MockMyClass(int xxx) : MyClass(xxx) {};
MOCK_METHOD1(call, int(int));
};
TEST(TestMyClass, worksFine) {
MockMyClass mock(111);
EXPECT_CALL(mock, call(_))
.WillOnce(Return(2000)); // times(1) by default;
mock.call(23);
}
TEST(TestMyClass, doesntWork) {
MockMyClass mock(111);
MyClass &myClassNotMock = mock;
EXPECT_CALL(mock, call(_))
.WillOnce(Return(2000)); // times(1) by default;
myClassNotMock.call(23);
}
我尝试过使用指针,但看起来是同样的问题。每次我有 Base 对象引用(从 mock 向上转换)并且我在其上调用一个函数时,gmock 都不会拾取它。
我会很感激一些帮助
【问题讨论】:
-
我认为您的示例代码不正确。您的
MockMyClass不是从MyClass派生的,也没有class函数。它也没有任何 gmock 和 gtest 标头。请按照您所说的方式编译并失败。 -
感谢您的回答我已经设法找出问题所在,我已经更新了代码以便其他人理解。此外,我回答了我的问题
标签: c++ googletest gmock