X7ROOT File Manager
Current Path:
/opt/cpanel/ea-ruby27/src/passenger-release-6.1.2/doc
opt
/
cpanel
/
ea-ruby27
/
src
/
passenger-release-6.1.2
/
doc
/
??
..
??
AiInstructions.md
(6.63 KB)
??
CodingTipsAndPitfalls.md
(2.93 KB)
??
CxxMockingStrategy.md
(982 B)
??
CxxTestingGuide.md
(2.97 KB)
??
DebuggingAndStressTesting.md
(4.95 KB)
??
DesignAspects
??
DeveloperQuickstart.md
(3.5 KB)
??
Packaging.md
(12.53 KB)
??
TempFileHandling.md
(797 B)
??
images
??
templates
Editing: CxxMockingStrategy.md
# 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) { } }; ```
Upload File
Create Folder