1

我正在尝试掌握 Google Mocks 的窍门,但在尝试模拟非虚拟方法时遇到了障碍。我有一个要模拟的 Socket 类。它有一个名为“write”的非虚拟方法,它接受参数:

class Socket {
public:
    int write(const unsigned char* buffer, size_t bufferLength) const;
}

所以我创建了一个模拟类作为指定的食谱:

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()’

谁能告诉我为什么??

谢谢。

4

1 回答 1

2

好吧,今天早上我的咖啡混合得不够浓。想通了问题。使用了错误的宏。这有效:

class MockSocket {
public:
    MOCK_CONST_METHOD2(foo, int(const unsigned char* buffer, size_t len));
};
于 2013-08-15T17:24:13.723 回答