Копируемые макеты в Google Test Framework

Можно ли сделать фиктивный класс копируемым в Google Test Framework?
Я видел, что по умолчанию конструктор копирования а также оператор копирования удаляются, как только MOCK_METHOD Макросы используются.
Есть ли способ обойти это?

1

Решение

Я не могу представить ни одного варианта использования для копирования фиктивных объектов. Если вы хотите имитировать реальный объект с помощью фиктивного объекта — вы должны иметь доступ к одному и тому же объекту из тестируемого кода и из кода тестового примера — так зачем копировать?

Во всяком случае — я вижу один способ сделать копию фиктивного объекта:
Вы должны определить обертку на фиктивном объекте, который должен храниться std::shared_ptr,

Пример:

class XxxMock : public XxxInterface
{
public:
MOCK_METHOD0(foo, void());
};

#include <memory>
class XxxSharedMock : public XxxInteface
{
public:
XxxSharedMock(std::shared_ptr<XxxMock> xxxMock = std::make_shared<XxxMock>())
: xxxMock(xxxMock)
{}
void foo() override
{
xxxMock->foo();
}
// having: XxxSharedMock xxxMock;
// do:     EXPECT_CALL(xxxMock.mock(), foo());
XxxMock& mock() { return *xxxMock; }
XxxMock const& mock() const { return *xxxMock; }

privated:
std::shared_ptr<XxxMock> xxxMock;
};
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector