Насмешка над процессом записи файла в googlemock

Я только начинаю с насмешек, используя googlemock для проекта C++. В моем случае, мой класс для тестирования наблюдает файл, в который записывается, и всякий раз, когда записывается минимальное количество новых данных, он начинает выполнять некоторую работу.

Что мне нужно, это макет класса для записи процесса в файл. Насколько я понимаю, мне нужно полностью реализовать эту функцию "записи в файл" в виде (для googlemock) виртуального класса, из которого происходит фиктивный класс? Фальшивая оболочка наконец используется для тестирования и оценки, верно?

Спасибо за помощь!

2 ответа

Решение

Я предполагаю, что объект вашего класса "наблюдатель" уведомлен о том, что объект класса "писатель" записал минимальное количество данных. В этом случае вам необходимо реализовать абстрактный класс, представляющий интерфейс для вашего класса "писатель", и сделать так, чтобы ваш реальный класс "писатель" наследовал от него и переопределил его виртуальные функции. Кроме того, ваша фиктивная реализация класса "writer" наследуется от этого интерфейса и создает фиктивные реализации с использованием MOCK_METHODn,

Затем ваш класс "наблюдатель" получит уведомления от объекта "писатель", используя указатель на абстрактный класс. Таким образом, вы можете использовать внедрение зависимостей, чтобы переключать реализацию на этапе тестирования, создавая фиктивный объект "писатель" и передавая его адрес объекту "наблюдатель" (вместо адреса реальному объекту "писатель") и настраивая контрольные примеры, используя EXPECT_CALL на макете объекта.

Это лучший совет, который я могу дать, поскольку вы не предоставили нам подробное описание ваших занятий.

РЕДАКТИРОВАТЬ:

Что касается реализации вашего реального класса "писателя": вам не нужно создавать его немедленно, вы можете использовать класс mock для проверки поведения класса "наблюдателя" и оставить реализацию на потом. Вам, конечно, придется в конечном итоге реализовать его, поскольку он должен использоваться в производственном коде.

Mocks, в терминах Google Mock, - это объекты, используемые для проверки того, что тестируемый код выполняет с ними определенные операции.

То, что вы описываете, это не макет, а служебный класс, который запускает ваш код в ходе тестовых операций.

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

Другие вопросы по тегам