1*481dde66SAndroid Build Coastguard Worker# Mocking Reference 2*481dde66SAndroid Build Coastguard Worker 3*481dde66SAndroid Build Coastguard WorkerThis page lists the facilities provided by GoogleTest for creating and working 4*481dde66SAndroid Build Coastguard Workerwith mock objects. To use them, add `#include <gmock/gmock.h>`. 5*481dde66SAndroid Build Coastguard Worker 6*481dde66SAndroid Build Coastguard Worker## Macros {#macros} 7*481dde66SAndroid Build Coastguard Worker 8*481dde66SAndroid Build Coastguard WorkerGoogleTest defines the following macros for working with mocks. 9*481dde66SAndroid Build Coastguard Worker 10*481dde66SAndroid Build Coastguard Worker### MOCK_METHOD {#MOCK_METHOD} 11*481dde66SAndroid Build Coastguard Worker 12*481dde66SAndroid Build Coastguard Worker`MOCK_METHOD(`*`return_type`*`,`*`method_name`*`, (`*`args...`*`));` \ 13*481dde66SAndroid Build Coastguard Worker`MOCK_METHOD(`*`return_type`*`,`*`method_name`*`, (`*`args...`*`), 14*481dde66SAndroid Build Coastguard Worker(`*`specs...`*`));` 15*481dde66SAndroid Build Coastguard Worker 16*481dde66SAndroid Build Coastguard WorkerDefines a mock method *`method_name`* with arguments `(`*`args...`*`)` and 17*481dde66SAndroid Build Coastguard Workerreturn type *`return_type`* within a mock class. 18*481dde66SAndroid Build Coastguard Worker 19*481dde66SAndroid Build Coastguard WorkerThe parameters of `MOCK_METHOD` mirror the method declaration. The optional 20*481dde66SAndroid Build Coastguard Workerfourth parameter *`specs...`* is a comma-separated list of qualifiers. The 21*481dde66SAndroid Build Coastguard Workerfollowing qualifiers are accepted: 22*481dde66SAndroid Build Coastguard Worker 23*481dde66SAndroid Build Coastguard Worker| Qualifier | Meaning | 24*481dde66SAndroid Build Coastguard Worker| -------------------------- | -------------------------------------------- | 25*481dde66SAndroid Build Coastguard Worker| `const` | Makes the mocked method a `const` method. Required if overriding a `const` method. | 26*481dde66SAndroid Build Coastguard Worker| `override` | Marks the method with `override`. Recommended if overriding a `virtual` method. | 27*481dde66SAndroid Build Coastguard Worker| `noexcept` | Marks the method with `noexcept`. Required if overriding a `noexcept` method. | 28*481dde66SAndroid Build Coastguard Worker| `Calltype(`*`calltype`*`)` | Sets the call type for the method, for example `Calltype(STDMETHODCALLTYPE)`. Useful on Windows. | 29*481dde66SAndroid Build Coastguard Worker| `ref(`*`qualifier`*`)` | Marks the method with the given reference qualifier, for example `ref(&)` or `ref(&&)`. Required if overriding a method that has a reference qualifier. | 30*481dde66SAndroid Build Coastguard Worker 31*481dde66SAndroid Build Coastguard WorkerNote that commas in arguments prevent `MOCK_METHOD` from parsing the arguments 32*481dde66SAndroid Build Coastguard Workercorrectly if they are not appropriately surrounded by parentheses. See the 33*481dde66SAndroid Build Coastguard Workerfollowing example: 34*481dde66SAndroid Build Coastguard Worker 35*481dde66SAndroid Build Coastguard Worker```cpp 36*481dde66SAndroid Build Coastguard Workerclass MyMock { 37*481dde66SAndroid Build Coastguard Worker public: 38*481dde66SAndroid Build Coastguard Worker // The following 2 lines will not compile due to commas in the arguments: 39*481dde66SAndroid Build Coastguard Worker MOCK_METHOD(std::pair<bool, int>, GetPair, ()); // Error! 40*481dde66SAndroid Build Coastguard Worker MOCK_METHOD(bool, CheckMap, (std::map<int, double>, bool)); // Error! 41*481dde66SAndroid Build Coastguard Worker 42*481dde66SAndroid Build Coastguard Worker // One solution - wrap arguments that contain commas in parentheses: 43*481dde66SAndroid Build Coastguard Worker MOCK_METHOD((std::pair<bool, int>), GetPair, ()); 44*481dde66SAndroid Build Coastguard Worker MOCK_METHOD(bool, CheckMap, ((std::map<int, double>), bool)); 45*481dde66SAndroid Build Coastguard Worker 46*481dde66SAndroid Build Coastguard Worker // Another solution - use type aliases: 47*481dde66SAndroid Build Coastguard Worker using BoolAndInt = std::pair<bool, int>; 48*481dde66SAndroid Build Coastguard Worker MOCK_METHOD(BoolAndInt, GetPair, ()); 49*481dde66SAndroid Build Coastguard Worker using MapIntDouble = std::map<int, double>; 50*481dde66SAndroid Build Coastguard Worker MOCK_METHOD(bool, CheckMap, (MapIntDouble, bool)); 51*481dde66SAndroid Build Coastguard Worker}; 52*481dde66SAndroid Build Coastguard Worker``` 53*481dde66SAndroid Build Coastguard Worker 54*481dde66SAndroid Build Coastguard Worker`MOCK_METHOD` must be used in the `public:` section of a mock class definition, 55*481dde66SAndroid Build Coastguard Workerregardless of whether the method being mocked is `public`, `protected`, or 56*481dde66SAndroid Build Coastguard Worker`private` in the base class. 57*481dde66SAndroid Build Coastguard Worker 58*481dde66SAndroid Build Coastguard Worker### EXPECT_CALL {#EXPECT_CALL} 59*481dde66SAndroid Build Coastguard Worker 60*481dde66SAndroid Build Coastguard Worker`EXPECT_CALL(`*`mock_object`*`,`*`method_name`*`(`*`matchers...`*`))` 61*481dde66SAndroid Build Coastguard Worker 62*481dde66SAndroid Build Coastguard WorkerCreates an [expectation](../gmock_for_dummies.md#setting-expectations) that the 63*481dde66SAndroid Build Coastguard Workermethod *`method_name`* of the object *`mock_object`* is called with arguments 64*481dde66SAndroid Build Coastguard Workerthat match the given matchers *`matchers...`*. `EXPECT_CALL` must precede any 65*481dde66SAndroid Build Coastguard Workercode that exercises the mock object. 66*481dde66SAndroid Build Coastguard Worker 67*481dde66SAndroid Build Coastguard WorkerThe parameter *`matchers...`* is a comma-separated list of 68*481dde66SAndroid Build Coastguard Worker[matchers](../gmock_for_dummies.md#matchers-what-arguments-do-we-expect) that 69*481dde66SAndroid Build Coastguard Workercorrespond to each argument of the method *`method_name`*. The expectation will 70*481dde66SAndroid Build Coastguard Workerapply only to calls of *`method_name`* whose arguments match all of the 71*481dde66SAndroid Build Coastguard Workermatchers. If `(`*`matchers...`*`)` is omitted, the expectation behaves as if 72*481dde66SAndroid Build Coastguard Workereach argument's matcher were a [wildcard matcher (`_`)](matchers.md#wildcard). 73*481dde66SAndroid Build Coastguard WorkerSee the [Matchers Reference](matchers.md) for a list of all built-in matchers. 74*481dde66SAndroid Build Coastguard Worker 75*481dde66SAndroid Build Coastguard WorkerThe following chainable clauses can be used to modify the expectation, and they 76*481dde66SAndroid Build Coastguard Workermust be used in the following order: 77*481dde66SAndroid Build Coastguard Worker 78*481dde66SAndroid Build Coastguard Worker```cpp 79*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(mock_object, method_name(matchers...)) 80*481dde66SAndroid Build Coastguard Worker .With(multi_argument_matcher) // Can be used at most once 81*481dde66SAndroid Build Coastguard Worker .Times(cardinality) // Can be used at most once 82*481dde66SAndroid Build Coastguard Worker .InSequence(sequences...) // Can be used any number of times 83*481dde66SAndroid Build Coastguard Worker .After(expectations...) // Can be used any number of times 84*481dde66SAndroid Build Coastguard Worker .WillOnce(action) // Can be used any number of times 85*481dde66SAndroid Build Coastguard Worker .WillRepeatedly(action) // Can be used at most once 86*481dde66SAndroid Build Coastguard Worker .RetiresOnSaturation(); // Can be used at most once 87*481dde66SAndroid Build Coastguard Worker``` 88*481dde66SAndroid Build Coastguard Worker 89*481dde66SAndroid Build Coastguard WorkerSee details for each modifier clause below. 90*481dde66SAndroid Build Coastguard Worker 91*481dde66SAndroid Build Coastguard Worker#### With {#EXPECT_CALL.With} 92*481dde66SAndroid Build Coastguard Worker 93*481dde66SAndroid Build Coastguard Worker`.With(`*`multi_argument_matcher`*`)` 94*481dde66SAndroid Build Coastguard Worker 95*481dde66SAndroid Build Coastguard WorkerRestricts the expectation to apply only to mock function calls whose arguments 96*481dde66SAndroid Build Coastguard Workeras a whole match the multi-argument matcher *`multi_argument_matcher`*. 97*481dde66SAndroid Build Coastguard Worker 98*481dde66SAndroid Build Coastguard WorkerGoogleTest passes all of the arguments as one tuple into the matcher. The 99*481dde66SAndroid Build Coastguard Workerparameter *`multi_argument_matcher`* must thus be a matcher of type 100*481dde66SAndroid Build Coastguard Worker`Matcher<std::tuple<A1, ..., An>>`, where `A1, ..., An` are the types of the 101*481dde66SAndroid Build Coastguard Workerfunction arguments. 102*481dde66SAndroid Build Coastguard Worker 103*481dde66SAndroid Build Coastguard WorkerFor example, the following code sets the expectation that 104*481dde66SAndroid Build Coastguard Worker`my_mock.SetPosition()` is called with any two arguments, the first argument 105*481dde66SAndroid Build Coastguard Workerbeing less than the second: 106*481dde66SAndroid Build Coastguard Worker 107*481dde66SAndroid Build Coastguard Worker```cpp 108*481dde66SAndroid Build Coastguard Workerusing ::testing::_; 109*481dde66SAndroid Build Coastguard Workerusing ::testing::Lt; 110*481dde66SAndroid Build Coastguard Worker... 111*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, SetPosition(_, _)) 112*481dde66SAndroid Build Coastguard Worker .With(Lt()); 113*481dde66SAndroid Build Coastguard Worker``` 114*481dde66SAndroid Build Coastguard Worker 115*481dde66SAndroid Build Coastguard WorkerGoogleTest provides some built-in matchers for 2-tuples, including the `Lt()` 116*481dde66SAndroid Build Coastguard Workermatcher above. See [Multi-argument Matchers](matchers.md#MultiArgMatchers). 117*481dde66SAndroid Build Coastguard Worker 118*481dde66SAndroid Build Coastguard WorkerThe `With` clause can be used at most once on an expectation and must be the 119*481dde66SAndroid Build Coastguard Workerfirst clause. 120*481dde66SAndroid Build Coastguard Worker 121*481dde66SAndroid Build Coastguard Worker#### Times {#EXPECT_CALL.Times} 122*481dde66SAndroid Build Coastguard Worker 123*481dde66SAndroid Build Coastguard Worker`.Times(`*`cardinality`*`)` 124*481dde66SAndroid Build Coastguard Worker 125*481dde66SAndroid Build Coastguard WorkerSpecifies how many times the mock function call is expected. 126*481dde66SAndroid Build Coastguard Worker 127*481dde66SAndroid Build Coastguard WorkerThe parameter *`cardinality`* represents the number of expected calls and can be 128*481dde66SAndroid Build Coastguard Workerone of the following, all defined in the `::testing` namespace: 129*481dde66SAndroid Build Coastguard Worker 130*481dde66SAndroid Build Coastguard Worker| Cardinality | Meaning | 131*481dde66SAndroid Build Coastguard Worker| ------------------- | --------------------------------------------------- | 132*481dde66SAndroid Build Coastguard Worker| `AnyNumber()` | The function can be called any number of times. | 133*481dde66SAndroid Build Coastguard Worker| `AtLeast(n)` | The function call is expected at least *n* times. | 134*481dde66SAndroid Build Coastguard Worker| `AtMost(n)` | The function call is expected at most *n* times. | 135*481dde66SAndroid Build Coastguard Worker| `Between(m, n)` | The function call is expected between *m* and *n* times, inclusive. | 136*481dde66SAndroid Build Coastguard Worker| `Exactly(n)` or `n` | The function call is expected exactly *n* times. If *n* is 0, the call should never happen. | 137*481dde66SAndroid Build Coastguard Worker 138*481dde66SAndroid Build Coastguard WorkerIf the `Times` clause is omitted, GoogleTest infers the cardinality as follows: 139*481dde66SAndroid Build Coastguard Worker 140*481dde66SAndroid Build Coastguard Worker* If neither [`WillOnce`](#EXPECT_CALL.WillOnce) nor 141*481dde66SAndroid Build Coastguard Worker [`WillRepeatedly`](#EXPECT_CALL.WillRepeatedly) are specified, the inferred 142*481dde66SAndroid Build Coastguard Worker cardinality is `Times(1)`. 143*481dde66SAndroid Build Coastguard Worker* If there are *n* `WillOnce` clauses and no `WillRepeatedly` clause, where 144*481dde66SAndroid Build Coastguard Worker *n* >= 1, the inferred cardinality is `Times(n)`. 145*481dde66SAndroid Build Coastguard Worker* If there are *n* `WillOnce` clauses and one `WillRepeatedly` clause, where 146*481dde66SAndroid Build Coastguard Worker *n* >= 0, the inferred cardinality is `Times(AtLeast(n))`. 147*481dde66SAndroid Build Coastguard Worker 148*481dde66SAndroid Build Coastguard WorkerThe `Times` clause can be used at most once on an expectation. 149*481dde66SAndroid Build Coastguard Worker 150*481dde66SAndroid Build Coastguard Worker#### InSequence {#EXPECT_CALL.InSequence} 151*481dde66SAndroid Build Coastguard Worker 152*481dde66SAndroid Build Coastguard Worker`.InSequence(`*`sequences...`*`)` 153*481dde66SAndroid Build Coastguard Worker 154*481dde66SAndroid Build Coastguard WorkerSpecifies that the mock function call is expected in a certain sequence. 155*481dde66SAndroid Build Coastguard Worker 156*481dde66SAndroid Build Coastguard WorkerThe parameter *`sequences...`* is any number of [`Sequence`](#Sequence) objects. 157*481dde66SAndroid Build Coastguard WorkerExpected calls assigned to the same sequence are expected to occur in the order 158*481dde66SAndroid Build Coastguard Workerthe expectations are declared. 159*481dde66SAndroid Build Coastguard Worker 160*481dde66SAndroid Build Coastguard WorkerFor example, the following code sets the expectation that the `Reset()` method 161*481dde66SAndroid Build Coastguard Workerof `my_mock` is called before both `GetSize()` and `Describe()`, and `GetSize()` 162*481dde66SAndroid Build Coastguard Workerand `Describe()` can occur in any order relative to each other: 163*481dde66SAndroid Build Coastguard Worker 164*481dde66SAndroid Build Coastguard Worker```cpp 165*481dde66SAndroid Build Coastguard Workerusing ::testing::Sequence; 166*481dde66SAndroid Build Coastguard WorkerSequence s1, s2; 167*481dde66SAndroid Build Coastguard Worker... 168*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, Reset()) 169*481dde66SAndroid Build Coastguard Worker .InSequence(s1, s2); 170*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, GetSize()) 171*481dde66SAndroid Build Coastguard Worker .InSequence(s1); 172*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, Describe()) 173*481dde66SAndroid Build Coastguard Worker .InSequence(s2); 174*481dde66SAndroid Build Coastguard Worker``` 175*481dde66SAndroid Build Coastguard Worker 176*481dde66SAndroid Build Coastguard WorkerThe `InSequence` clause can be used any number of times on an expectation. 177*481dde66SAndroid Build Coastguard Worker 178*481dde66SAndroid Build Coastguard WorkerSee also the [`InSequence` class](#InSequence). 179*481dde66SAndroid Build Coastguard Worker 180*481dde66SAndroid Build Coastguard Worker#### After {#EXPECT_CALL.After} 181*481dde66SAndroid Build Coastguard Worker 182*481dde66SAndroid Build Coastguard Worker`.After(`*`expectations...`*`)` 183*481dde66SAndroid Build Coastguard Worker 184*481dde66SAndroid Build Coastguard WorkerSpecifies that the mock function call is expected to occur after one or more 185*481dde66SAndroid Build Coastguard Workerother calls. 186*481dde66SAndroid Build Coastguard Worker 187*481dde66SAndroid Build Coastguard WorkerThe parameter *`expectations...`* can be up to five 188*481dde66SAndroid Build Coastguard Worker[`Expectation`](#Expectation) or [`ExpectationSet`](#ExpectationSet) objects. 189*481dde66SAndroid Build Coastguard WorkerThe mock function call is expected to occur after all of the given expectations. 190*481dde66SAndroid Build Coastguard Worker 191*481dde66SAndroid Build Coastguard WorkerFor example, the following code sets the expectation that the `Describe()` 192*481dde66SAndroid Build Coastguard Workermethod of `my_mock` is called only after both `InitX()` and `InitY()` have been 193*481dde66SAndroid Build Coastguard Workercalled. 194*481dde66SAndroid Build Coastguard Worker 195*481dde66SAndroid Build Coastguard Worker```cpp 196*481dde66SAndroid Build Coastguard Workerusing ::testing::Expectation; 197*481dde66SAndroid Build Coastguard Worker... 198*481dde66SAndroid Build Coastguard WorkerExpectation init_x = EXPECT_CALL(my_mock, InitX()); 199*481dde66SAndroid Build Coastguard WorkerExpectation init_y = EXPECT_CALL(my_mock, InitY()); 200*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, Describe()) 201*481dde66SAndroid Build Coastguard Worker .After(init_x, init_y); 202*481dde66SAndroid Build Coastguard Worker``` 203*481dde66SAndroid Build Coastguard Worker 204*481dde66SAndroid Build Coastguard WorkerThe `ExpectationSet` object is helpful when the number of prerequisites for an 205*481dde66SAndroid Build Coastguard Workerexpectation is large or variable, for example: 206*481dde66SAndroid Build Coastguard Worker 207*481dde66SAndroid Build Coastguard Worker```cpp 208*481dde66SAndroid Build Coastguard Workerusing ::testing::ExpectationSet; 209*481dde66SAndroid Build Coastguard Worker... 210*481dde66SAndroid Build Coastguard WorkerExpectationSet all_inits; 211*481dde66SAndroid Build Coastguard Worker// Collect all expectations of InitElement() calls 212*481dde66SAndroid Build Coastguard Workerfor (int i = 0; i < element_count; i++) { 213*481dde66SAndroid Build Coastguard Worker all_inits += EXPECT_CALL(my_mock, InitElement(i)); 214*481dde66SAndroid Build Coastguard Worker} 215*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, Describe()) 216*481dde66SAndroid Build Coastguard Worker .After(all_inits); // Expect Describe() call after all InitElement() calls 217*481dde66SAndroid Build Coastguard Worker``` 218*481dde66SAndroid Build Coastguard Worker 219*481dde66SAndroid Build Coastguard WorkerThe `After` clause can be used any number of times on an expectation. 220*481dde66SAndroid Build Coastguard Worker 221*481dde66SAndroid Build Coastguard Worker#### WillOnce {#EXPECT_CALL.WillOnce} 222*481dde66SAndroid Build Coastguard Worker 223*481dde66SAndroid Build Coastguard Worker`.WillOnce(`*`action`*`)` 224*481dde66SAndroid Build Coastguard Worker 225*481dde66SAndroid Build Coastguard WorkerSpecifies the mock function's actual behavior when invoked, for a single 226*481dde66SAndroid Build Coastguard Workermatching function call. 227*481dde66SAndroid Build Coastguard Worker 228*481dde66SAndroid Build Coastguard WorkerThe parameter *`action`* represents the 229*481dde66SAndroid Build Coastguard Worker[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function 230*481dde66SAndroid Build Coastguard Workercall will perform. See the [Actions Reference](actions.md) for a list of 231*481dde66SAndroid Build Coastguard Workerbuilt-in actions. 232*481dde66SAndroid Build Coastguard Worker 233*481dde66SAndroid Build Coastguard WorkerThe use of `WillOnce` implicitly sets a cardinality on the expectation when 234*481dde66SAndroid Build Coastguard Worker`Times` is not specified. See [`Times`](#EXPECT_CALL.Times). 235*481dde66SAndroid Build Coastguard Worker 236*481dde66SAndroid Build Coastguard WorkerEach matching function call will perform the next action in the order declared. 237*481dde66SAndroid Build Coastguard WorkerFor example, the following code specifies that `my_mock.GetNumber()` is expected 238*481dde66SAndroid Build Coastguard Workerto be called exactly 3 times and will return `1`, `2`, and `3` respectively on 239*481dde66SAndroid Build Coastguard Workerthe first, second, and third calls: 240*481dde66SAndroid Build Coastguard Worker 241*481dde66SAndroid Build Coastguard Worker```cpp 242*481dde66SAndroid Build Coastguard Workerusing ::testing::Return; 243*481dde66SAndroid Build Coastguard Worker... 244*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, GetNumber()) 245*481dde66SAndroid Build Coastguard Worker .WillOnce(Return(1)) 246*481dde66SAndroid Build Coastguard Worker .WillOnce(Return(2)) 247*481dde66SAndroid Build Coastguard Worker .WillOnce(Return(3)); 248*481dde66SAndroid Build Coastguard Worker``` 249*481dde66SAndroid Build Coastguard Worker 250*481dde66SAndroid Build Coastguard WorkerThe `WillOnce` clause can be used any number of times on an expectation. Unlike 251*481dde66SAndroid Build Coastguard Worker`WillRepeatedly`, the action fed to each `WillOnce` call will be called at most 252*481dde66SAndroid Build Coastguard Workeronce, so may be a move-only type and/or have an `&&`-qualified call operator. 253*481dde66SAndroid Build Coastguard Worker 254*481dde66SAndroid Build Coastguard Worker#### WillRepeatedly {#EXPECT_CALL.WillRepeatedly} 255*481dde66SAndroid Build Coastguard Worker 256*481dde66SAndroid Build Coastguard Worker`.WillRepeatedly(`*`action`*`)` 257*481dde66SAndroid Build Coastguard Worker 258*481dde66SAndroid Build Coastguard WorkerSpecifies the mock function's actual behavior when invoked, for all subsequent 259*481dde66SAndroid Build Coastguard Workermatching function calls. Takes effect after the actions specified in the 260*481dde66SAndroid Build Coastguard Worker[`WillOnce`](#EXPECT_CALL.WillOnce) clauses, if any, have been performed. 261*481dde66SAndroid Build Coastguard Worker 262*481dde66SAndroid Build Coastguard WorkerThe parameter *`action`* represents the 263*481dde66SAndroid Build Coastguard Worker[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function 264*481dde66SAndroid Build Coastguard Workercall will perform. See the [Actions Reference](actions.md) for a list of 265*481dde66SAndroid Build Coastguard Workerbuilt-in actions. 266*481dde66SAndroid Build Coastguard Worker 267*481dde66SAndroid Build Coastguard WorkerThe use of `WillRepeatedly` implicitly sets a cardinality on the expectation 268*481dde66SAndroid Build Coastguard Workerwhen `Times` is not specified. See [`Times`](#EXPECT_CALL.Times). 269*481dde66SAndroid Build Coastguard Worker 270*481dde66SAndroid Build Coastguard WorkerIf any `WillOnce` clauses have been specified, matching function calls will 271*481dde66SAndroid Build Coastguard Workerperform those actions before the action specified by `WillRepeatedly`. See the 272*481dde66SAndroid Build Coastguard Workerfollowing example: 273*481dde66SAndroid Build Coastguard Worker 274*481dde66SAndroid Build Coastguard Worker```cpp 275*481dde66SAndroid Build Coastguard Workerusing ::testing::Return; 276*481dde66SAndroid Build Coastguard Worker... 277*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, GetName()) 278*481dde66SAndroid Build Coastguard Worker .WillRepeatedly(Return("John Doe")); // Return "John Doe" on all calls 279*481dde66SAndroid Build Coastguard Worker 280*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, GetNumber()) 281*481dde66SAndroid Build Coastguard Worker .WillOnce(Return(42)) // Return 42 on the first call 282*481dde66SAndroid Build Coastguard Worker .WillRepeatedly(Return(7)); // Return 7 on all subsequent calls 283*481dde66SAndroid Build Coastguard Worker``` 284*481dde66SAndroid Build Coastguard Worker 285*481dde66SAndroid Build Coastguard WorkerThe `WillRepeatedly` clause can be used at most once on an expectation. 286*481dde66SAndroid Build Coastguard Worker 287*481dde66SAndroid Build Coastguard Worker#### RetiresOnSaturation {#EXPECT_CALL.RetiresOnSaturation} 288*481dde66SAndroid Build Coastguard Worker 289*481dde66SAndroid Build Coastguard Worker`.RetiresOnSaturation()` 290*481dde66SAndroid Build Coastguard Worker 291*481dde66SAndroid Build Coastguard WorkerIndicates that the expectation will no longer be active after the expected 292*481dde66SAndroid Build Coastguard Workernumber of matching function calls has been reached. 293*481dde66SAndroid Build Coastguard Worker 294*481dde66SAndroid Build Coastguard WorkerThe `RetiresOnSaturation` clause is only meaningful for expectations with an 295*481dde66SAndroid Build Coastguard Workerupper-bounded cardinality. The expectation will *retire* (no longer match any 296*481dde66SAndroid Build Coastguard Workerfunction calls) after it has been *saturated* (the upper bound has been 297*481dde66SAndroid Build Coastguard Workerreached). See the following example: 298*481dde66SAndroid Build Coastguard Worker 299*481dde66SAndroid Build Coastguard Worker```cpp 300*481dde66SAndroid Build Coastguard Workerusing ::testing::_; 301*481dde66SAndroid Build Coastguard Workerusing ::testing::AnyNumber; 302*481dde66SAndroid Build Coastguard Worker... 303*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, SetNumber(_)) // Expectation 1 304*481dde66SAndroid Build Coastguard Worker .Times(AnyNumber()); 305*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, SetNumber(7)) // Expectation 2 306*481dde66SAndroid Build Coastguard Worker .Times(2) 307*481dde66SAndroid Build Coastguard Worker .RetiresOnSaturation(); 308*481dde66SAndroid Build Coastguard Worker``` 309*481dde66SAndroid Build Coastguard Worker 310*481dde66SAndroid Build Coastguard WorkerIn the above example, the first two calls to `my_mock.SetNumber(7)` match 311*481dde66SAndroid Build Coastguard Workerexpectation 2, which then becomes inactive and no longer matches any calls. A 312*481dde66SAndroid Build Coastguard Workerthird call to `my_mock.SetNumber(7)` would then match expectation 1. Without 313*481dde66SAndroid Build Coastguard Worker`RetiresOnSaturation()` on expectation 2, a third call to `my_mock.SetNumber(7)` 314*481dde66SAndroid Build Coastguard Workerwould match expectation 2 again, producing a failure since the limit of 2 calls 315*481dde66SAndroid Build Coastguard Workerwas exceeded. 316*481dde66SAndroid Build Coastguard Worker 317*481dde66SAndroid Build Coastguard WorkerThe `RetiresOnSaturation` clause can be used at most once on an expectation and 318*481dde66SAndroid Build Coastguard Workermust be the last clause. 319*481dde66SAndroid Build Coastguard Worker 320*481dde66SAndroid Build Coastguard Worker### ON_CALL {#ON_CALL} 321*481dde66SAndroid Build Coastguard Worker 322*481dde66SAndroid Build Coastguard Worker`ON_CALL(`*`mock_object`*`,`*`method_name`*`(`*`matchers...`*`))` 323*481dde66SAndroid Build Coastguard Worker 324*481dde66SAndroid Build Coastguard WorkerDefines what happens when the method *`method_name`* of the object 325*481dde66SAndroid Build Coastguard Worker*`mock_object`* is called with arguments that match the given matchers 326*481dde66SAndroid Build Coastguard Worker*`matchers...`*. Requires a modifier clause to specify the method's behavior. 327*481dde66SAndroid Build Coastguard Worker*Does not* set any expectations that the method will be called. 328*481dde66SAndroid Build Coastguard Worker 329*481dde66SAndroid Build Coastguard WorkerThe parameter *`matchers...`* is a comma-separated list of 330*481dde66SAndroid Build Coastguard Worker[matchers](../gmock_for_dummies.md#matchers-what-arguments-do-we-expect) that 331*481dde66SAndroid Build Coastguard Workercorrespond to each argument of the method *`method_name`*. The `ON_CALL` 332*481dde66SAndroid Build Coastguard Workerspecification will apply only to calls of *`method_name`* whose arguments match 333*481dde66SAndroid Build Coastguard Workerall of the matchers. If `(`*`matchers...`*`)` is omitted, the behavior is as if 334*481dde66SAndroid Build Coastguard Workereach argument's matcher were a [wildcard matcher (`_`)](matchers.md#wildcard). 335*481dde66SAndroid Build Coastguard WorkerSee the [Matchers Reference](matchers.md) for a list of all built-in matchers. 336*481dde66SAndroid Build Coastguard Worker 337*481dde66SAndroid Build Coastguard WorkerThe following chainable clauses can be used to set the method's behavior, and 338*481dde66SAndroid Build Coastguard Workerthey must be used in the following order: 339*481dde66SAndroid Build Coastguard Worker 340*481dde66SAndroid Build Coastguard Worker```cpp 341*481dde66SAndroid Build Coastguard WorkerON_CALL(mock_object, method_name(matchers...)) 342*481dde66SAndroid Build Coastguard Worker .With(multi_argument_matcher) // Can be used at most once 343*481dde66SAndroid Build Coastguard Worker .WillByDefault(action); // Required 344*481dde66SAndroid Build Coastguard Worker``` 345*481dde66SAndroid Build Coastguard Worker 346*481dde66SAndroid Build Coastguard WorkerSee details for each modifier clause below. 347*481dde66SAndroid Build Coastguard Worker 348*481dde66SAndroid Build Coastguard Worker#### With {#ON_CALL.With} 349*481dde66SAndroid Build Coastguard Worker 350*481dde66SAndroid Build Coastguard Worker`.With(`*`multi_argument_matcher`*`)` 351*481dde66SAndroid Build Coastguard Worker 352*481dde66SAndroid Build Coastguard WorkerRestricts the specification to only mock function calls whose arguments as a 353*481dde66SAndroid Build Coastguard Workerwhole match the multi-argument matcher *`multi_argument_matcher`*. 354*481dde66SAndroid Build Coastguard Worker 355*481dde66SAndroid Build Coastguard WorkerGoogleTest passes all of the arguments as one tuple into the matcher. The 356*481dde66SAndroid Build Coastguard Workerparameter *`multi_argument_matcher`* must thus be a matcher of type 357*481dde66SAndroid Build Coastguard Worker`Matcher<std::tuple<A1, ..., An>>`, where `A1, ..., An` are the types of the 358*481dde66SAndroid Build Coastguard Workerfunction arguments. 359*481dde66SAndroid Build Coastguard Worker 360*481dde66SAndroid Build Coastguard WorkerFor example, the following code sets the default behavior when 361*481dde66SAndroid Build Coastguard Worker`my_mock.SetPosition()` is called with any two arguments, the first argument 362*481dde66SAndroid Build Coastguard Workerbeing less than the second: 363*481dde66SAndroid Build Coastguard Worker 364*481dde66SAndroid Build Coastguard Worker```cpp 365*481dde66SAndroid Build Coastguard Workerusing ::testing::_; 366*481dde66SAndroid Build Coastguard Workerusing ::testing::Lt; 367*481dde66SAndroid Build Coastguard Workerusing ::testing::Return; 368*481dde66SAndroid Build Coastguard Worker... 369*481dde66SAndroid Build Coastguard WorkerON_CALL(my_mock, SetPosition(_, _)) 370*481dde66SAndroid Build Coastguard Worker .With(Lt()) 371*481dde66SAndroid Build Coastguard Worker .WillByDefault(Return(true)); 372*481dde66SAndroid Build Coastguard Worker``` 373*481dde66SAndroid Build Coastguard Worker 374*481dde66SAndroid Build Coastguard WorkerGoogleTest provides some built-in matchers for 2-tuples, including the `Lt()` 375*481dde66SAndroid Build Coastguard Workermatcher above. See [Multi-argument Matchers](matchers.md#MultiArgMatchers). 376*481dde66SAndroid Build Coastguard Worker 377*481dde66SAndroid Build Coastguard WorkerThe `With` clause can be used at most once with each `ON_CALL` statement. 378*481dde66SAndroid Build Coastguard Worker 379*481dde66SAndroid Build Coastguard Worker#### WillByDefault {#ON_CALL.WillByDefault} 380*481dde66SAndroid Build Coastguard Worker 381*481dde66SAndroid Build Coastguard Worker`.WillByDefault(`*`action`*`)` 382*481dde66SAndroid Build Coastguard Worker 383*481dde66SAndroid Build Coastguard WorkerSpecifies the default behavior of a matching mock function call. 384*481dde66SAndroid Build Coastguard Worker 385*481dde66SAndroid Build Coastguard WorkerThe parameter *`action`* represents the 386*481dde66SAndroid Build Coastguard Worker[action](../gmock_for_dummies.md#actions-what-should-it-do) that the function 387*481dde66SAndroid Build Coastguard Workercall will perform. See the [Actions Reference](actions.md) for a list of 388*481dde66SAndroid Build Coastguard Workerbuilt-in actions. 389*481dde66SAndroid Build Coastguard Worker 390*481dde66SAndroid Build Coastguard WorkerFor example, the following code specifies that by default, a call to 391*481dde66SAndroid Build Coastguard Worker`my_mock.Greet()` will return `"hello"`: 392*481dde66SAndroid Build Coastguard Worker 393*481dde66SAndroid Build Coastguard Worker```cpp 394*481dde66SAndroid Build Coastguard Workerusing ::testing::Return; 395*481dde66SAndroid Build Coastguard Worker... 396*481dde66SAndroid Build Coastguard WorkerON_CALL(my_mock, Greet()) 397*481dde66SAndroid Build Coastguard Worker .WillByDefault(Return("hello")); 398*481dde66SAndroid Build Coastguard Worker``` 399*481dde66SAndroid Build Coastguard Worker 400*481dde66SAndroid Build Coastguard WorkerThe action specified by `WillByDefault` is superseded by the actions specified 401*481dde66SAndroid Build Coastguard Workeron a matching `EXPECT_CALL` statement, if any. See the 402*481dde66SAndroid Build Coastguard Worker[`WillOnce`](#EXPECT_CALL.WillOnce) and 403*481dde66SAndroid Build Coastguard Worker[`WillRepeatedly`](#EXPECT_CALL.WillRepeatedly) clauses of `EXPECT_CALL`. 404*481dde66SAndroid Build Coastguard Worker 405*481dde66SAndroid Build Coastguard WorkerThe `WillByDefault` clause must be used exactly once with each `ON_CALL` 406*481dde66SAndroid Build Coastguard Workerstatement. 407*481dde66SAndroid Build Coastguard Worker 408*481dde66SAndroid Build Coastguard Worker## Classes {#classes} 409*481dde66SAndroid Build Coastguard Worker 410*481dde66SAndroid Build Coastguard WorkerGoogleTest defines the following classes for working with mocks. 411*481dde66SAndroid Build Coastguard Worker 412*481dde66SAndroid Build Coastguard Worker### DefaultValue {#DefaultValue} 413*481dde66SAndroid Build Coastguard Worker 414*481dde66SAndroid Build Coastguard Worker`::testing::DefaultValue<T>` 415*481dde66SAndroid Build Coastguard Worker 416*481dde66SAndroid Build Coastguard WorkerAllows a user to specify the default value for a type `T` that is both copyable 417*481dde66SAndroid Build Coastguard Workerand publicly destructible (i.e. anything that can be used as a function return 418*481dde66SAndroid Build Coastguard Workertype). For mock functions with a return type of `T`, this default value is 419*481dde66SAndroid Build Coastguard Workerreturned from function calls that do not specify an action. 420*481dde66SAndroid Build Coastguard Worker 421*481dde66SAndroid Build Coastguard WorkerProvides the static methods `Set()`, `SetFactory()`, and `Clear()` to manage the 422*481dde66SAndroid Build Coastguard Workerdefault value: 423*481dde66SAndroid Build Coastguard Worker 424*481dde66SAndroid Build Coastguard Worker```cpp 425*481dde66SAndroid Build Coastguard Worker// Sets the default value to be returned. T must be copy constructible. 426*481dde66SAndroid Build Coastguard WorkerDefaultValue<T>::Set(value); 427*481dde66SAndroid Build Coastguard Worker 428*481dde66SAndroid Build Coastguard Worker// Sets a factory. Will be invoked on demand. T must be move constructible. 429*481dde66SAndroid Build Coastguard WorkerT MakeT(); 430*481dde66SAndroid Build Coastguard WorkerDefaultValue<T>::SetFactory(&MakeT); 431*481dde66SAndroid Build Coastguard Worker 432*481dde66SAndroid Build Coastguard Worker// Unsets the default value. 433*481dde66SAndroid Build Coastguard WorkerDefaultValue<T>::Clear(); 434*481dde66SAndroid Build Coastguard Worker``` 435*481dde66SAndroid Build Coastguard Worker 436*481dde66SAndroid Build Coastguard Worker### NiceMock {#NiceMock} 437*481dde66SAndroid Build Coastguard Worker 438*481dde66SAndroid Build Coastguard Worker`::testing::NiceMock<T>` 439*481dde66SAndroid Build Coastguard Worker 440*481dde66SAndroid Build Coastguard WorkerRepresents a mock object that suppresses warnings on 441*481dde66SAndroid Build Coastguard Worker[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The 442*481dde66SAndroid Build Coastguard Workertemplate parameter `T` is any mock class, except for another `NiceMock`, 443*481dde66SAndroid Build Coastguard Worker`NaggyMock`, or `StrictMock`. 444*481dde66SAndroid Build Coastguard Worker 445*481dde66SAndroid Build Coastguard WorkerUsage of `NiceMock<T>` is analogous to usage of `T`. `NiceMock<T>` is a subclass 446*481dde66SAndroid Build Coastguard Workerof `T`, so it can be used wherever an object of type `T` is accepted. In 447*481dde66SAndroid Build Coastguard Workeraddition, `NiceMock<T>` can be constructed with any arguments that a constructor 448*481dde66SAndroid Build Coastguard Workerof `T` accepts. 449*481dde66SAndroid Build Coastguard Worker 450*481dde66SAndroid Build Coastguard WorkerFor example, the following code suppresses warnings on the mock `my_mock` of 451*481dde66SAndroid Build Coastguard Workertype `MockClass` if a method other than `DoSomething()` is called: 452*481dde66SAndroid Build Coastguard Worker 453*481dde66SAndroid Build Coastguard Worker```cpp 454*481dde66SAndroid Build Coastguard Workerusing ::testing::NiceMock; 455*481dde66SAndroid Build Coastguard Worker... 456*481dde66SAndroid Build Coastguard WorkerNiceMock<MockClass> my_mock("some", "args"); 457*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, DoSomething()); 458*481dde66SAndroid Build Coastguard Worker... code that uses my_mock ... 459*481dde66SAndroid Build Coastguard Worker``` 460*481dde66SAndroid Build Coastguard Worker 461*481dde66SAndroid Build Coastguard Worker`NiceMock<T>` only works for mock methods defined using the `MOCK_METHOD` macro 462*481dde66SAndroid Build Coastguard Workerdirectly in the definition of class `T`. If a mock method is defined in a base 463*481dde66SAndroid Build Coastguard Workerclass of `T`, a warning might still be generated. 464*481dde66SAndroid Build Coastguard Worker 465*481dde66SAndroid Build Coastguard Worker`NiceMock<T>` might not work correctly if the destructor of `T` is not virtual. 466*481dde66SAndroid Build Coastguard Worker 467*481dde66SAndroid Build Coastguard Worker### NaggyMock {#NaggyMock} 468*481dde66SAndroid Build Coastguard Worker 469*481dde66SAndroid Build Coastguard Worker`::testing::NaggyMock<T>` 470*481dde66SAndroid Build Coastguard Worker 471*481dde66SAndroid Build Coastguard WorkerRepresents a mock object that generates warnings on 472*481dde66SAndroid Build Coastguard Worker[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The 473*481dde66SAndroid Build Coastguard Workertemplate parameter `T` is any mock class, except for another `NiceMock`, 474*481dde66SAndroid Build Coastguard Worker`NaggyMock`, or `StrictMock`. 475*481dde66SAndroid Build Coastguard Worker 476*481dde66SAndroid Build Coastguard WorkerUsage of `NaggyMock<T>` is analogous to usage of `T`. `NaggyMock<T>` is a 477*481dde66SAndroid Build Coastguard Workersubclass of `T`, so it can be used wherever an object of type `T` is accepted. 478*481dde66SAndroid Build Coastguard WorkerIn addition, `NaggyMock<T>` can be constructed with any arguments that a 479*481dde66SAndroid Build Coastguard Workerconstructor of `T` accepts. 480*481dde66SAndroid Build Coastguard Worker 481*481dde66SAndroid Build Coastguard WorkerFor example, the following code generates warnings on the mock `my_mock` of type 482*481dde66SAndroid Build Coastguard Worker`MockClass` if a method other than `DoSomething()` is called: 483*481dde66SAndroid Build Coastguard Worker 484*481dde66SAndroid Build Coastguard Worker```cpp 485*481dde66SAndroid Build Coastguard Workerusing ::testing::NaggyMock; 486*481dde66SAndroid Build Coastguard Worker... 487*481dde66SAndroid Build Coastguard WorkerNaggyMock<MockClass> my_mock("some", "args"); 488*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, DoSomething()); 489*481dde66SAndroid Build Coastguard Worker... code that uses my_mock ... 490*481dde66SAndroid Build Coastguard Worker``` 491*481dde66SAndroid Build Coastguard Worker 492*481dde66SAndroid Build Coastguard WorkerMock objects of type `T` by default behave the same way as `NaggyMock<T>`. 493*481dde66SAndroid Build Coastguard Worker 494*481dde66SAndroid Build Coastguard Worker### StrictMock {#StrictMock} 495*481dde66SAndroid Build Coastguard Worker 496*481dde66SAndroid Build Coastguard Worker`::testing::StrictMock<T>` 497*481dde66SAndroid Build Coastguard Worker 498*481dde66SAndroid Build Coastguard WorkerRepresents a mock object that generates test failures on 499*481dde66SAndroid Build Coastguard Worker[uninteresting calls](../gmock_cook_book.md#uninteresting-vs-unexpected). The 500*481dde66SAndroid Build Coastguard Workertemplate parameter `T` is any mock class, except for another `NiceMock`, 501*481dde66SAndroid Build Coastguard Worker`NaggyMock`, or `StrictMock`. 502*481dde66SAndroid Build Coastguard Worker 503*481dde66SAndroid Build Coastguard WorkerUsage of `StrictMock<T>` is analogous to usage of `T`. `StrictMock<T>` is a 504*481dde66SAndroid Build Coastguard Workersubclass of `T`, so it can be used wherever an object of type `T` is accepted. 505*481dde66SAndroid Build Coastguard WorkerIn addition, `StrictMock<T>` can be constructed with any arguments that a 506*481dde66SAndroid Build Coastguard Workerconstructor of `T` accepts. 507*481dde66SAndroid Build Coastguard Worker 508*481dde66SAndroid Build Coastguard WorkerFor example, the following code generates a test failure on the mock `my_mock` 509*481dde66SAndroid Build Coastguard Workerof type `MockClass` if a method other than `DoSomething()` is called: 510*481dde66SAndroid Build Coastguard Worker 511*481dde66SAndroid Build Coastguard Worker```cpp 512*481dde66SAndroid Build Coastguard Workerusing ::testing::StrictMock; 513*481dde66SAndroid Build Coastguard Worker... 514*481dde66SAndroid Build Coastguard WorkerStrictMock<MockClass> my_mock("some", "args"); 515*481dde66SAndroid Build Coastguard WorkerEXPECT_CALL(my_mock, DoSomething()); 516*481dde66SAndroid Build Coastguard Worker... code that uses my_mock ... 517*481dde66SAndroid Build Coastguard Worker``` 518*481dde66SAndroid Build Coastguard Worker 519*481dde66SAndroid Build Coastguard Worker`StrictMock<T>` only works for mock methods defined using the `MOCK_METHOD` 520*481dde66SAndroid Build Coastguard Workermacro directly in the definition of class `T`. If a mock method is defined in a 521*481dde66SAndroid Build Coastguard Workerbase class of `T`, a failure might not be generated. 522*481dde66SAndroid Build Coastguard Worker 523*481dde66SAndroid Build Coastguard Worker`StrictMock<T>` might not work correctly if the destructor of `T` is not 524*481dde66SAndroid Build Coastguard Workervirtual. 525*481dde66SAndroid Build Coastguard Worker 526*481dde66SAndroid Build Coastguard Worker### Sequence {#Sequence} 527*481dde66SAndroid Build Coastguard Worker 528*481dde66SAndroid Build Coastguard Worker`::testing::Sequence` 529*481dde66SAndroid Build Coastguard Worker 530*481dde66SAndroid Build Coastguard WorkerRepresents a chronological sequence of expectations. See the 531*481dde66SAndroid Build Coastguard Worker[`InSequence`](#EXPECT_CALL.InSequence) clause of `EXPECT_CALL` for usage. 532*481dde66SAndroid Build Coastguard Worker 533*481dde66SAndroid Build Coastguard Worker### InSequence {#InSequence} 534*481dde66SAndroid Build Coastguard Worker 535*481dde66SAndroid Build Coastguard Worker`::testing::InSequence` 536*481dde66SAndroid Build Coastguard Worker 537*481dde66SAndroid Build Coastguard WorkerAn object of this type causes all expectations encountered in its scope to be 538*481dde66SAndroid Build Coastguard Workerput in an anonymous sequence. 539*481dde66SAndroid Build Coastguard Worker 540*481dde66SAndroid Build Coastguard WorkerThis allows more convenient expression of multiple expectations in a single 541*481dde66SAndroid Build Coastguard Workersequence: 542*481dde66SAndroid Build Coastguard Worker 543*481dde66SAndroid Build Coastguard Worker```cpp 544*481dde66SAndroid Build Coastguard Workerusing ::testing::InSequence; 545*481dde66SAndroid Build Coastguard Worker{ 546*481dde66SAndroid Build Coastguard Worker InSequence seq; 547*481dde66SAndroid Build Coastguard Worker 548*481dde66SAndroid Build Coastguard Worker // The following are expected to occur in the order declared. 549*481dde66SAndroid Build Coastguard Worker EXPECT_CALL(...); 550*481dde66SAndroid Build Coastguard Worker EXPECT_CALL(...); 551*481dde66SAndroid Build Coastguard Worker ... 552*481dde66SAndroid Build Coastguard Worker EXPECT_CALL(...); 553*481dde66SAndroid Build Coastguard Worker} 554*481dde66SAndroid Build Coastguard Worker``` 555*481dde66SAndroid Build Coastguard Worker 556*481dde66SAndroid Build Coastguard WorkerThe name of the `InSequence` object does not matter. 557*481dde66SAndroid Build Coastguard Worker 558*481dde66SAndroid Build Coastguard Worker### Expectation {#Expectation} 559*481dde66SAndroid Build Coastguard Worker 560*481dde66SAndroid Build Coastguard Worker`::testing::Expectation` 561*481dde66SAndroid Build Coastguard Worker 562*481dde66SAndroid Build Coastguard WorkerRepresents a mock function call expectation as created by 563*481dde66SAndroid Build Coastguard Worker[`EXPECT_CALL`](#EXPECT_CALL): 564*481dde66SAndroid Build Coastguard Worker 565*481dde66SAndroid Build Coastguard Worker```cpp 566*481dde66SAndroid Build Coastguard Workerusing ::testing::Expectation; 567*481dde66SAndroid Build Coastguard WorkerExpectation my_expectation = EXPECT_CALL(...); 568*481dde66SAndroid Build Coastguard Worker``` 569*481dde66SAndroid Build Coastguard Worker 570*481dde66SAndroid Build Coastguard WorkerUseful for specifying sequences of expectations; see the 571*481dde66SAndroid Build Coastguard Worker[`After`](#EXPECT_CALL.After) clause of `EXPECT_CALL`. 572*481dde66SAndroid Build Coastguard Worker 573*481dde66SAndroid Build Coastguard Worker### ExpectationSet {#ExpectationSet} 574*481dde66SAndroid Build Coastguard Worker 575*481dde66SAndroid Build Coastguard Worker`::testing::ExpectationSet` 576*481dde66SAndroid Build Coastguard Worker 577*481dde66SAndroid Build Coastguard WorkerRepresents a set of mock function call expectations. 578*481dde66SAndroid Build Coastguard Worker 579*481dde66SAndroid Build Coastguard WorkerUse the `+=` operator to add [`Expectation`](#Expectation) objects to the set: 580*481dde66SAndroid Build Coastguard Worker 581*481dde66SAndroid Build Coastguard Worker```cpp 582*481dde66SAndroid Build Coastguard Workerusing ::testing::ExpectationSet; 583*481dde66SAndroid Build Coastguard WorkerExpectationSet my_expectations; 584*481dde66SAndroid Build Coastguard Workermy_expectations += EXPECT_CALL(...); 585*481dde66SAndroid Build Coastguard Worker``` 586*481dde66SAndroid Build Coastguard Worker 587*481dde66SAndroid Build Coastguard WorkerUseful for specifying sequences of expectations; see the 588*481dde66SAndroid Build Coastguard Worker[`After`](#EXPECT_CALL.After) clause of `EXPECT_CALL`. 589