Zrób tak jak należy.
Czyli RS ma wygldać tak:
class IRS {
virtual jakasMetoda() = 0;
virtual jakasInnaMetoda(const std::string &text) = 0;
};
class RS : public IRS
{
public:
RSMock(Logger& _log);
jakasMetoda();
jakasInnaMetoda(const std::string &text);
… … …
};
To co testujesz ma się posługiwać abstrakcją zdefiniowaną przez interface IRS
!
Teraz ze zrobienie RSMock
nie będzie najmniejszego problemu.
troszkę off topic
Straszne są te twoje nazwy domyślam się, że RS to port RS-232, więc ta klasa powinn się nazywać `PortRS232` by unikna nieporozumień i konfliktów nazw!
Interface powinien mieć nazwę opisującą funkcjonalność, np: `ICommunitionPort` albo `IAbstractPort` albo `AbstracCommunication` albo ... .
Taki interface ma zdefiniowane metody, które są potrzebne by wyklinać zestaw abstrakcyjnych operacji. Nie powinno być istotne, czy to jest RS-232, czy USB, czy LPR czy cokolwiek innego. To jak to zostanie zrealizowane potem jest sprawą drugorzędną. W ten sposób zyskujesz większą elastyczność i prostotę testowania.