模拟非虚方法生成错误

时间:2013-08-15 16:18:31

标签: gmock

我正试图搞砸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()’

有人可以告诉我为什么吗?

感谢。

1 个答案:

答案 0 :(得分:2)

好的,今天早上我的咖啡浓度不够强。找出问题所在。使用了错误的宏。这有效:

class MockSocket {
public:
    MOCK_CONST_METHOD2(foo, int(const unsigned char* buffer, size_t len));
};