Один из вариантов - создать интерфейс для камеры и заводской функции:
class ICam {
virtual bool isOpened() const = 0;
};
class ICamFactory {
virtual std::unique_ptr<ICam> VideoCapture(int idx) = 0;
};
Затем ваш класс камеры создается с помощью CamFactory, которая реализует ICamFactory.В своем тесте вы можете создать MockCamFactory, который возвращает MockCam.Затем вы можете установить ожидания для MockCamFactory и MockCam:
EXPECT_CALL(mockCamFactory, VideoCapture(idx))
.WillOnce(ReturnNew<MockCam>());
EXPECT_CALL(mockCam, isOpened())
.WillOnce(Return(true));
ASSERT_TRUE(camera.IsOpen(idx));
Ваш реальный класс Cam затем упаковывает вызовы в OpenCV.