Для создания MockClass
объекта - в любом случае должен быть вызван один из BaseClass
конструкторов.
Если BaseClass
имеет другой (определяемый пользователем) конструктор, который приемлем для ложного сценария - вызовите его явно:
class MockClass : public BaseClass
{
public:
MockClass() : BaseClass(/* c-tor args */) {}
// ...
};
Если такого конструктора нет - вам нужно будет добавить его (может сделать его защищенным, чтобы он не был доступен в обычном BaseClass
контексте использования).
[ edit : поскольку это библиотечный класс - добавление конструктора, скорее всего, не вариант]
Другое возможное направление - ввести чистый интерфейсный класс для BaseClass
и смоделировать его вместо насмешки BaseClass
напрямую. В этом случае использование BaseClass
должно быть переключено на использование нового интерфейса, а реализация интерфейса обернет BaseClass
и перенаправит вызов необходимых методов во внутренний объект BaseClass
. Таким образом, дополнительные BaseClass
конструкторы для тестирования не нужно добавлять.