gmock TypedEq та же строка другой адрес
Я пытаюсь установить ожидание на объекте gmock. Ожидание должно применяться всякий раз, когда "avout" передается в качестве аргумента моему методу. Я настроил ожидание так:
EXPECT_CALL(actx_mock, getDeviceClientService(TypedEq<const char*>("avout"),_,_)).WillOnce(DoAll(SetArgPointee<2>(&mockAVOut), Return(0)));
TypedEq необходим, потому что метод перегружен, принимая либо строку, либо const char *. Когда я запускаю тест, я получаю следующую ошибку:
CAniSpiceServices_test.cpp:1357: EXPECT_CALL(actx_mock, getDeviceClientService(TypedEq<const char*>("avout"),_,_))...
Expected arg #0: is equal to 0x4dbf41 pointing to "avout"
Actual: 0x7fbc6861370d pointing to "avout"
Таким образом, похоже, что даже если строка одна и та же, поскольку она указывает другой экземпляр этой строки по другому адресу, она не совпадает? Есть ли способ сделать так, чтобы это совпадало с любой строкой, которая соответствует этому значению, независимо от адреса?
1 ответ
Хорошо, я понял это, поэтому я решил опубликовать ответ для всех, кто борется с этим.
Как оказалось, TypedEq<тип> является просто сокращением для Matcher
Чтобы решить проблему, я вместо TypedEq