es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

traducción de “google mock private and afx methods” al español: métodos privados y de afx en Google Mock

Tengo un problema,

Voy a probar esta función pública:

bool FeatureManager::isFeatureActivated(CString section, CString key)
{
    bool isActivated = false;
    char  returnedString[MAX_PATH] = _T("");
    CString  path = getPath();
    path.Replace("\", "\\");
    path += "InternFeatures.ini";

    if (GetPrivateProfileString(_T(section), _T(key), "", returnedString, sizeof(returnedString), _T(path)))
    {
        CString currentValue = returnedString;
        if (currentValue == "{ja}")
        {
            isActivated = true;
        }   
    }

    return isActivated; 
}

El método getPath es un método privado, ahora la primera pregunta es ¿cómo puedo simular el método getPath.

CString FeatureManager::getPath()

Y el método GetPrivateProfileString es un método de WinBase.h, y esta es la segunda pregunta, ¿cómo puedo simular esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para simular el método getPath, puedes crear un mock de la clase FeatureManager utilizando GoogleMock. Aquí tienes un ejemplo:

    “`c++
    class MockFeatureManager : public FeatureManager {
    public:
    MOCK_METHOD0(getPath, CString());
    }


    En este ejemplo, creamos una clase mock llamada `MockFeatureManager` que hereda de `FeatureManager` y sobrescribe el método `getPath`. Utilizamos la macro `MOCK_METHOD0` para definir una versión simulada del método `getPath` que no recibe argumentos. Para simular el método `GetPrivateProfileString`, puedes crear una función envoltorio que llame al método y luego simular esa función envoltorio utilizando GoogleMock. Aquí tienes un ejemplo: ```c++ DWORD WINAPI MockGetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName) { // Haz algo aquí, o devuelve un valor predefinido } // En tu código de prueba EXPECT_CALL(..., MockGetPrivateProfileString(_, _, _, _, _, _)) .WillOnce(Return(1));

    En este ejemplo, creamos una función envoltorio llamada MockGetPrivateProfileString que recibe los mismos argumentos que el método GetPrivateProfileString. Luego utilizamos la macro EXPECT_CALL de GoogleMock para simular la función envoltorio, y utilizamos el método Return para especificar el valor de retorno de la función simulada.

    Cabe destacar que, dado que GetPrivateProfileString es una función global definida en WinBase.h, no se puede simular directamente utilizando GoogleMock. Sin embargo, al crear una función envoltorio, aún puedes simular su comportamiento y probar tu código.

Comments are closed.