我使用GMock(1.10.0)的设置非常简单。我正在尝试模拟Generic的实例,该实例是名为Observation的类的成员变量。我只需要测试Generic的方法calc_gravity()刚被调用一次。任何提示将不胜感激。 (请忽略泄漏。)
我一直收到此错误消息:
没有匹配功能可调用'MockGeneric :: gmock_calc_gravity(const testing :: internal :: AnythingMatcher&)'
class Generic {
public:
virtual float calc_gravity(float x, float y) { return 9.81;} // Keep it simple.
virtual ~Generic() {}
};
class MockGeneric :public Generic {
public:
MOCK_METHOD(float, calc_gravity, (float, float));
};
class Observation {
private:
Generic* generic;
public:
Observation(Generic* genericPtr) : generic(genericPtr) {};
virtual void PositionConvert(float a, float b, float c) { cout << 5.0 + generic->calc_gravity();}
virtual ~Observation() {};
};
TEST(PositionConverter_Test, AMethodFromGenericInvokedOneTime) {
MockGeneric* mockGenericPtr = new MockGeneric();
using ::testing::_;
EXPECT_CALL(*mockGenericPtr, calc_gravity(_)).Times(1);
Observation o(mockGenericPtr);
o.PositionConvert(2.5, 2.5, 2.5);
}
MOCK_METHOD(float,calc_gravity,(float,float));
您应将上面的行替换为:
MOCK_METHOD2(calc_gravity, float(float, float));
您的代码中还有其他错误:
generic-> calc_gravity()...EXPECT_CALL(* mockGenericPtr,calc_gravity(_))。Times(1);
calc_gravity
接受两个参数。