Если бы у меня был:
class Foo
{
public:
virtual int Duplicate(int) const& = 0;
};
Как я могу определить фиктивный объект с помощью gMock, наследующего от Foo и имитирующего метод Duplication?
Я пытался:
class MockFoo : public Foo
{
public:
MOCK_METHOD(int, Duplicate, (int), (const&, override));
};
но это не работает, есть ли у вас какие-либо предложения?





По крайней мере из v1.12.x, из gmock_cook_book, используйте ref(&), поэтому
class MockFoo : public Foo
{
public:
MOCK_METHOD(int, Duplicate, (int), (const, ref(&), override));
};
Для версии 1.10.0 все еще существует обходной путь с косвенностью:
class MockFoo : public Foo
{
public:
MOCK_METHOD(int, DuplicateRef, (int), (const));
int Duplicate(int n) const& override { return DuplicateRef(n); }
};
Он хорошо компилируется godbolt.org/z/qdvdazMq1 . Опубликуйте минимальный воспроизводимый пример, который вызывает error: static assertion failed.
могу ли я спросить вас, какую версию gtest вы используете? я на 1.10
godbolt имеет только 2 версии: 1.10, которая терпит неудачу, и ствол, который работает успешно.
ок, это просто моя старая версия с ошибками. Большое спасибо
Я считаю, что в версии 1.10 нет возможности достичь моей цели, я прав?
Добавлен обходной путь для версии 1.10.0.
Спасибо за ответ, я попробовал и получил такую ошибку:
error: static assertion failed: ref(&) cannot be recognized as a valid specification modifier.