我正试图搞砸Google Mocks,但我试图模仿非虚拟方法。我有一个我想要模拟的Socket类。它有一个名为“write”的非虚方法,它接受参数:
class Socket {
public:
int write(const unsigned char* buffer, size_t bufferLength) const;
}
所以我创建了一个Mock类作为指定的烹饪书:
class MockSocket {
public:
MOCK_CONST_METHOD0(write, int(const unsigned char* data, size_t dataLength));
};
但是这不能编译。它会产生以下错误:
error: size of array ‘this_method_does_not_take_0_arguments’ is negative
error: no matching function for call to ‘testing::internal::FunctionMocker<int ()(const unsigned char*, size_t)>::Invoke()’
error: no matching function for call to ‘testing::internal::FunctionMocker<int ()(const unsigned char*, size_t)>::With()’
有人可以告诉我为什么吗?
感谢。
答案 0 :(得分:2)
好的,今天早上我的咖啡浓度不够强。找出问题所在。使用了错误的宏。这有效:
class MockSocket {
public:
MOCK_CONST_METHOD2(foo, int(const unsigned char* buffer, size_t len));
};