Я пытаюсь издеваться над абстрактным классом, но продолжаю собирать ошибки изнутри заголовков GMock. Я не могу поделиться фактическим кодом, но почти такой же, как ниже. Мышление работало нормально, но мне пришлось изменить функцию «DoStuff», чтобы взять объект, но ссылку. С тех пор он не компилируется. Ошибка - это что-то вроде: * GMock не может сравнивать «Элемент» с длинным *.GMock не компилируется, виртуальная функция с аргументом ссылки на тип пользователя
"C++ code"
using ::testing::NiceMock;
class Element{};
class Foo
{
public:
virtual void DoStuff(Element&) = 0;
};
class MockFoo : public Foo
{
public:
MockFoo() {};
MOCK_METHOD1(DoStuff, void(Element&));
};
TEST(example, test)
{
NiceMock<MockFoo> mf;
Element element{};
EXPECT_CALL(mf, DoStuff(element)).Times(1);
mf.DoStuff(element);
}
Спасибо за быстрый ответ, мне не нужен точный «элемент», мне нужно проверить, вызвана ли функция. Но снова спасибо, я собираюсь попробовать ваши предложения. –
Вы можете использовать любой matcher 'testing :: _', если это все, что вам нужно. EXPECT_CALL (mf, DoStuff (_)); ' – PiotrNycz
Спасибо, что еще лучше! –