bonobomock

Cookbook

Step-by-step recipes for mocking different types of functions with BonoboMock. Each recipe includes a complete working example.

Mocking individual functions

Recipes for mocking specific function types using BONOBO_MOCK and its variants.

Recipe Description Platform
Free Functions Mock free (global) functions, including extern "C" functions All platforms
Static Functions Mock static member functions All platforms
Non-virtual Functions Mock non-virtual member functions (per-instance or all-instance matching) All platforms
Virtual Functions Mock virtual member functions (incl. protected and private) All platforms
Protected Functions Mock non-virtual protected member functions All platforms
Private Functions Mock private member functions (static and non-static) All platforms
Overloaded Functions Mock overloaded functions (static, member, and template) All platforms
Variadic Functions Mock variadic template and C-style variadic functions All platforms, C++11+
Lambda Functions Mock lambda functions All platforms, C++11+

Mock class approach

An alternative higher-level pattern for mocking an entire class at once using BONOBO_MOCK_METHOD.

Recipe Description Platform
Mock Classes gMock-style EXPECT_CALL syntax with BONOBO_MOCK_METHOD C++11+, Itanium ABI only

Constructors

Recipes for dealing with constructors, which cannot be mocked directly.

Recipe Description Platform
Suppress Constructor Side Effects Use BONOBO_DUMMY_* link dummying to stop a constructor’s side effects All platforms

Mock object recipes

Recipes for configuring and typing mock objects regardless of the function type being mocked.

Recipe Description Platform
Naggy, Nice, and Strict Mocks Control behavior for unexpected calls All platforms
Explicit Mock Object Types Declare mock types for C++03 projects or GoogleTest fixtures All platforms

Which macro should I use?

Function type Macro
Free / static / non-virtual BONOBO_MOCK
Virtual (Itanium ABI + C++11, default constructor) BONOBO_MOCK (auto-detects virtual functions)
Virtual (Itanium ABI + C++11, no default constructor) BONOBO_MOCK_VIRTUAL_ON
Virtual (SunPro / C++03, default constructor) BONOBO_MOCK_VIRTUAL
Virtual (SunPro / C++03, no default constructor) BONOBO_MOCK_VIRTUAL_ON
Virtual protected Expose pointer via derived helper class, then use BONOBO_MOCK_VIRTUAL — see Virtual Functions: Protected
Private static BONOBO_MOCK_PRIVATE_STATIC
Private non-static (virtual or non-virtual) BONOBO_MOCK_PRIVATE_NON_CONST for non-const functions or BONOBO_MOCK_PRIVATE_CONST for const functions

See Macro API Reference for the full documentation of each macro.


← Back to Documentation Home