2012-06-26 20 views
6

Quiero asignar un NiceMock con el valor de retorno de un método. NiceMock es una variable de instancia.Usando NiceMock como variable de instancia con GoogleMock

class TestFileToOsg : public testing::Test 
{ 
public: 
    NiceMock<MockFileToOsg>* _mockFileToOsg; 
protected: 
virtual void SetUp(); 
}; 

void TestFileToOsg::SetUp() 
{ 
    _mockFileToOsg = FixtureFileToOsg::getMockFileToOsgWithValidConfig(); 
} 

El método de fijación es:

MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig() 
{ 
    MockFileToOsg* fileToOsg = new MockFileToOsg(...); 
    return fileToOsg; 
} 

El compilador lanza el siguiente error:

error: invalid conversion from ‘MockFileToOsg*’ to ‘testing::NiceMock<MockFileToOsg>*’ 

¿Cómo puedo asignar la variable de instancia con el valor devuelto por el método de fijación?

Respuesta

8

En su testclass sólo debe tener un puntero a su mockobject:

class TestFileToOsg : public testing::Test 
{ 
public: 
    MockFileToOsg* _mockFileToOsg; 
protected: 
... 

Su accesorio debe crear una instancia de un NiceMock y devolver un puntero a su mockobject.

MockFileToOsg* FixtureFileToOsg::getMockFileToOsgWithValidConfig() 
{ 
    MockFileToOsg* fileToOsg = new NiceMock<MockFileToOsg>(...); 
    return fileToOsg; 
} 

El NiceMock <> deriva de la mockClass.So NiceMock <> sólo se debe utilizar cuando se instancia un MockObject.

Cuestiones relacionadas