Вы можете извлечь метод Fun в класс калькулятора, который реализует интерфейс.Вы должны передать экземпляр этого интерфейса классу А. в конструкторе.
При тестировании у вас могут быть другие классы, реализующие этот интерфейс, которые возвращают другие значения.
Этот метод также имеет большое преимущество,что вы разделяете задачи расчета значения и использования рассчитанного значения.
class A {
public:
A (IFunCalc calc) { m_calc = calc; }
void Fun { if calc.FunRet() > 4 ... }
private:
IFunCalc m_calc;
}
class FunCalc : IFunCulc {
public:
int FunRet { return 4; }
}
class FunCalc4Test : IFunCalc {
public:
int FunRet { return 27; }
}