ÿØÿà JFIF ` ` ÿþxØ
| Server IP : 109.234.164.53 / Your IP : 216.73.216.110 Web Server : Apache System : Linux cervelle.o2switch.net 4.18.0-553.32.1.lve.el8.x86_64 #1 SMP Thu Dec 19 13:14:03 UTC 2024 x86_64 User : computer3 ( 1098) PHP Version : 7.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/cpanel/ea-ruby27/src/passenger-release-6.1.2/doc/ |
Upload File : |
# C++ mocking strategy
- We don't use any mocking library.
- We implement mocking by splitting mockable code to protected virtual methods. Inside test suites, we create a subclass in which we override the methods we want to mock.
- Best practices for the override:
- Opt-in for mocking on a per-test basis.
- When not opted-in, call the parent class's method instead of duplicating its code.
Example:
```c++
class Greeter {
protected:
virtual const char *name() {
return "john";
}
public:
void greet() {
std::cout << "hello " << name() << std::endl;
}
};
// In the test suite:
class TestGreeter: public Greeter {
protected:
virtual const char *name() override {
if (mockName != nullptr) {
return mockName;
} else {
return Greeter::name();
}
}
public:
const char *mockName; // Set to non-nullptr to mock the name
TestGreeter()
: mockName(nullptr)
{ }
};
```