2011-06-27 15 views
14

estoy teniendo una clase con operator[], así:¿Cómo crear una clase simulada con operador []?

class Base 
{ 
    public: 
    virtual ~Base(){} 
    virtual const int & operator[](const unsigned int index) const = 0; 
}; 

¿Cómo puedo crear una clase simulada a través de Google marco simulacro de este método?

yo probamos este:

class MockBase : public Base 
{ 
public: 
    MOCK_CONST_METHOD1(operator[], 
         const int& (const unsigned int) 
        ); 
}; 

pero que produce errores siguientes:

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 

Respuesta

18

Los MOCK_METHOD# macros no funcionarán en los operadores. La solución dada en this message dice que crear un método regular para burlarse:

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); } 
}; 
+0

Gracias. Eso funciona bien –

+0

¿Cómo funcionaría eso para el operador de asignación? – Mawg

Cuestiones relacionadas