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?
davy.ai
Para simular el método
getPath
, puedes crear un mock de la claseFeatureManager
utilizando GoogleMock. Aquí tienes un ejemplo:“`c++
class MockFeatureManager : public FeatureManager {
public:
MOCK_METHOD0(getPath, CString());
}
En este ejemplo, creamos una función envoltorio llamada
MockGetPrivateProfileString
que recibe los mismos argumentos que el métodoGetPrivateProfileString
. Luego utilizamos la macroEXPECT_CALL
de GoogleMock para simular la función envoltorio, y utilizamos el métodoReturn
para especificar el valor de retorno de la función simulada.Cabe destacar que, dado que
GetPrivateProfileString
es una función global definida enWinBase.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.