我正在上一个operator[]
课程,如下所示:
class Base
{
public:
virtual ~Base(){}
virtual const int & operator[]( const unsigned int index ) const = 0;
};
如何使用google模拟框架为此方法创建模拟类?
我试过了:
class MockBase : public Base
{
public:
MOCK_CONST_METHOD1( operator[],
const int& ( const unsigned int )
);
};
但是会产生下一个错误:
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
error: pasting "]" and "_" does not give a valid preprocessing token
答案 0 :(得分:19)
MOCK_METHOD#
宏不适用于运营商。 this message中给出的解决方案说创建一个常规的模拟方法:
class Base {
public:
virtual ~Base () {}
virtual bool operator==(const Base &) = 0;
};
class MockBase: public Base {
public:
MOCK_METHOD1(Equals, bool(const Base &));
virtual bool operator==(const Base & rhs) { return Equals(rhs); }
};