如何用operator []创建一个mock类?

时间:2011-06-27 12:12:09

标签: c++ googlemock

我正在上一个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

1 个答案:

答案 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); }
};