Googletest export
Add general explanation of MOCK_METHOD, including list of supported qualifiers. PiperOrigin-RevId: 262077180
This commit is contained in:
parent
79690c5375
commit
dd5402d9d4
|
@ -12,12 +12,36 @@ brevity, but you should do it in your own code.
|
||||||
|
|
||||||
### Creating Mock Classes
|
### Creating Mock Classes
|
||||||
|
|
||||||
|
Mock classes are defined as normal classes, using the `MOCK_METHOD` macro to
|
||||||
|
generate mocked methods. The macro gets 3 or 4 parameters:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class MyMock {
|
||||||
|
public:
|
||||||
|
MOCK_METHOD(ReturnType, MethodName, (Args...));
|
||||||
|
MOCK_METHOD(ReturnType, MethodName, (Args...), (Specs...));
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
The first 3 parameters are simply the method declaration, split into 3 parts.
|
||||||
|
The 4th parameter accepts a closed list of qualifiers, which affect the
|
||||||
|
generated method:
|
||||||
|
|
||||||
|
* **`const`** - Makes the mocked method a `const` method. Required if
|
||||||
|
overriding a `const` method.
|
||||||
|
* **`override`** - Marks the method with `override`. Recommended if overriding
|
||||||
|
a `virtual` method.
|
||||||
|
* **`noexcept`** - Marks the method with `noexcept`. Required if overriding a
|
||||||
|
`noexcept` method.
|
||||||
|
* **`Calltype(...)`** - Sets the call type for the method (e.g. to
|
||||||
|
`STDMETHODCALLTYPE`), useful in Windows.
|
||||||
|
|
||||||
#### Dealing with unprotected commas
|
#### Dealing with unprotected commas
|
||||||
|
|
||||||
Unprotected commas, i.e. commas which are not surrounded by parentheses, prevent
|
Unprotected commas, i.e. commas which are not surrounded by parentheses, prevent
|
||||||
`MOCK_METHOD` from parsing its arguments correctly:
|
`MOCK_METHOD` from parsing its arguments correctly:
|
||||||
|
|
||||||
```cpp
|
```cpp {.bad}
|
||||||
class MockFoo {
|
class MockFoo {
|
||||||
public:
|
public:
|
||||||
MOCK_METHOD(std::pair<bool, int>, GetPair, ()); // Won't compile!
|
MOCK_METHOD(std::pair<bool, int>, GetPair, ()); // Won't compile!
|
||||||
|
@ -27,7 +51,7 @@ class MockFoo {
|
||||||
|
|
||||||
Solution 1 - wrap with parentheses:
|
Solution 1 - wrap with parentheses:
|
||||||
|
|
||||||
```cpp
|
```cpp {.good}
|
||||||
class MockFoo {
|
class MockFoo {
|
||||||
public:
|
public:
|
||||||
MOCK_METHOD((std::pair<bool, int>), GetPair, ());
|
MOCK_METHOD((std::pair<bool, int>), GetPair, ());
|
||||||
|
@ -40,7 +64,7 @@ invalid C++. `MOCK_METHOD` removes the parentheses.
|
||||||
|
|
||||||
Solution 2 - define an alias:
|
Solution 2 - define an alias:
|
||||||
|
|
||||||
```cpp
|
```cpp {.good}
|
||||||
class MockFoo {
|
class MockFoo {
|
||||||
public:
|
public:
|
||||||
using BoolAndInt = std::pair<bool, int>;
|
using BoolAndInt = std::pair<bool, int>;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user