PHP 8.3.31
Preview: CxxMockingStrategy.md Size: 982 B
//opt/cpanel/ea-ruby27/src/passenger-release-6.1.2/doc/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)
        { }
};
```

Directory Contents

Dirs: 3 × Files: 8

Name Size Perms Modified Actions
- drwxr-xr-x 2026-02-11 07:32:10
Edit Download
images DIR
- drwxr-xr-x 2026-02-11 07:32:10
Edit Download
templates DIR
- drwxr-xr-x 2026-02-11 07:32:10
Edit Download
6.63 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
2.93 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
982 B lrw-r--r-- 2026-01-27 23:50:52
Edit Download
2.97 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
4.95 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
3.50 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
12.53 KB lrw-r--r-- 2026-01-27 23:50:52
Edit Download
797 B lrw-r--r-- 2026-01-27 23:50:52
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).