Manual docs tweaks still in preparation for including docs with code pushes
This commit is contained in:
		@@ -2,6 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<!-- GOOGLETEST_CM0019 DO NOT DELETE -->
 | 
					<!-- GOOGLETEST_CM0019 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0033 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Defining a Mock Class
 | 
					### Defining a Mock Class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Mocking a Normal Class {#MockClass}
 | 
					#### Mocking a Normal Class {#MockClass}
 | 
				
			||||||
@@ -232,7 +234,7 @@ A **matcher** matches a *single* argument. You can use it inside `ON_CALL()` or
 | 
				
			|||||||
Built-in matchers (where `argument` is the function argument) are divided into
 | 
					Built-in matchers (where `argument` is the function argument) are divided into
 | 
				
			||||||
several categories:
 | 
					several categories:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Wildcard
 | 
					#### Wildcard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Matcher                     | Description
 | 
					Matcher                     | Description
 | 
				
			||||||
:-------------------------- | :-----------------------------------------------
 | 
					:-------------------------- | :-----------------------------------------------
 | 
				
			||||||
@@ -495,6 +497,10 @@ messages, you can use:
 | 
				
			|||||||
| `WhenDynamicCastTo<T>(m)` | when `argument` is passed through               |
 | 
					| `WhenDynamicCastTo<T>(m)` | when `argument` is passed through               |
 | 
				
			||||||
:                           : `dynamic_cast<T>()`, it matches matcher `m`.    :
 | 
					:                           : `dynamic_cast<T>()`, it matches matcher `m`.    :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0026 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0027 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Multi-argument Matchers {#MultiArgMatchers}
 | 
					#### Multi-argument Matchers {#MultiArgMatchers}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Technically, all matchers match a *single* value. A "multi-argument" matcher is
 | 
					Technically, all matchers match a *single* value. A "multi-argument" matcher is
 | 
				
			||||||
@@ -525,13 +531,25 @@ reorder them) to participate in the matching:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
You can make a matcher from one or more other matchers:
 | 
					You can make a matcher from one or more other matchers:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                  | Description                                     |
 | 
					| Matcher                          | Description                             |
 | 
				
			||||||
| :----------------------- | :---------------------------------------------- |
 | 
					| :------------------------------- | :-------------------------------------- |
 | 
				
			||||||
| `AllOf(m1, m2, ..., mn)` | `argument` matches all of the matchers `m1` to  |
 | 
					| `AllOf(m1, m2, ..., mn)`         | `argument` matches all of the matchers  |
 | 
				
			||||||
:                          : `mn`.                                           :
 | 
					:                                  : `m1` to `mn`.                           :
 | 
				
			||||||
| `AnyOf(m1, m2, ..., mn)` | `argument` matches at least one of the matchers |
 | 
					| `AllOfArray({m0, m1, ..., mn})`, | The same as `AllOf()` except that the   |
 | 
				
			||||||
:                          : `m1` to `mn`.                                   :
 | 
					: `AllOfArray(a_container)`,       : matchers come from an initializer list, :
 | 
				
			||||||
| `Not(m)`                 | `argument` doesn't match matcher `m`.           |
 | 
					: `AllOfArray(begin, end)`,        : STL-style container, iterator range, or :
 | 
				
			||||||
 | 
					: `AllOfArray(array)`, or          : C-style array.                          :
 | 
				
			||||||
 | 
					: `AllOfArray(array, count)`       :                                         :
 | 
				
			||||||
 | 
					| `AnyOf(m1, m2, ..., mn)`         | `argument` matches at least one of the  |
 | 
				
			||||||
 | 
					:                                  : matchers `m1` to `mn`.                  :
 | 
				
			||||||
 | 
					| `AnyOfArray({m0, m1, ..., mn})`, | The same as `AnyOf()` except that the   |
 | 
				
			||||||
 | 
					: `AnyOfArray(a_container)`,       : matchers come from an initializer list, :
 | 
				
			||||||
 | 
					: `AnyOfArray(begin, end)`,        : STL-style container, iterator range, or :
 | 
				
			||||||
 | 
					: `AnyOfArray(array)`, or          : C-style array.                          :
 | 
				
			||||||
 | 
					: `AnyOfArray(array, count)`       :                                         :
 | 
				
			||||||
 | 
					| `Not(m)`                         | `argument` doesn't match matcher `m`.   |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0028 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Adapters for Matchers
 | 
					#### Adapters for Matchers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -550,7 +568,7 @@ You can make a matcher from one or more other matchers:
 | 
				
			|||||||
`AddressSatisfies(callback)` and `Truly(callback)` take ownership of `callback`,
 | 
					`AddressSatisfies(callback)` and `Truly(callback)` take ownership of `callback`,
 | 
				
			||||||
which must be a permanent callback.
 | 
					which must be a permanent callback.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Matchers as Predicates {#MatchersAsPredicatesCheat}
 | 
					#### Using Matchers as Predicates {#MatchersAsPredicatesCheat}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                       | Description                                 |
 | 
					| Matcher                       | Description                                 |
 | 
				
			||||||
| :---------------------------- | :------------------------------------------ |
 | 
					| :---------------------------- | :------------------------------------------ |
 | 
				
			||||||
@@ -587,20 +605,13 @@ which must be a permanent callback.
 | 
				
			|||||||
1.  You can use `PrintToString(x)` to convert a value `x` of any type to a
 | 
					1.  You can use `PrintToString(x)` to convert a value `x` of any type to a
 | 
				
			||||||
    string.
 | 
					    string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Matchers as Test Assertions
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Matcher                      | Description
 | 
					 | 
				
			||||||
:--------------------------- | :----------
 | 
					 | 
				
			||||||
`ASSERT_THAT(expression, m)` | Generates a [fatal failure](../../googletest/docs/primer.md#assertions) if the value of `expression` doesn't match matcher `m`.
 | 
					 | 
				
			||||||
`EXPECT_THAT(expression, m)` | Generates a non-fatal failure if the value of `expression` doesn't match matcher `m`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Actions {#ActionList}
 | 
					### Actions {#ActionList}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Actions** specify what a mock function should do when invoked.
 | 
					**Actions** specify what a mock function should do when invoked.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Returning a Value
 | 
					#### Returning a Value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                     | Description                                   |
 | 
					|                             |                                               |
 | 
				
			||||||
| :-------------------------- | :-------------------------------------------- |
 | 
					| :-------------------------- | :-------------------------------------------- |
 | 
				
			||||||
| `Return()`                  | Return from a `void` mock function.           |
 | 
					| `Return()`                  | Return from a `void` mock function.           |
 | 
				
			||||||
| `Return(value)`             | Return `value`. If the type of `value` is     |
 | 
					| `Return(value)`             | Return `value`. If the type of `value` is     |
 | 
				
			||||||
@@ -619,7 +630,7 @@ Matcher                      | Description
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### Side Effects
 | 
					#### Side Effects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                            | Description                             |
 | 
					|                                    |                                         |
 | 
				
			||||||
| :--------------------------------- | :-------------------------------------- |
 | 
					| :--------------------------------- | :-------------------------------------- |
 | 
				
			||||||
| `Assign(&variable, value)`         | Assign `value` to variable.             |
 | 
					| `Assign(&variable, value)`         | Assign `value` to variable.             |
 | 
				
			||||||
| `DeleteArg<N>()`                   | Delete the `N`-th (0-based) argument,   |
 | 
					| `DeleteArg<N>()`                   | Delete the `N`-th (0-based) argument,   |
 | 
				
			||||||
@@ -652,8 +663,11 @@ Matcher                      | Description
 | 
				
			|||||||
In the following, by "callable" we mean a free function, `std::function`,
 | 
					In the following, by "callable" we mean a free function, `std::function`,
 | 
				
			||||||
functor, lambda, or `google3`-style permanent callback.
 | 
					functor, lambda, or `google3`-style permanent callback.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                             | Description                            |
 | 
					|                                     |                                        |
 | 
				
			||||||
| :---------------------------------- | :------------------------------------- |
 | 
					| :---------------------------------- | :------------------------------------- |
 | 
				
			||||||
 | 
					| `f`                                 | Invoke f with the arguments passed to  |
 | 
				
			||||||
 | 
					:                                     : the mock function, where f is a        :
 | 
				
			||||||
 | 
					:                                     : callable (except of google3 callback). :
 | 
				
			||||||
| `Invoke(f)`                         | Invoke `f` with the arguments passed   |
 | 
					| `Invoke(f)`                         | Invoke `f` with the arguments passed   |
 | 
				
			||||||
:                                     : to the mock function, where `f` can be :
 | 
					:                                     : to the mock function, where `f` can be :
 | 
				
			||||||
:                                     : a global/static function or a functor. :
 | 
					:                                     : a global/static function or a functor. :
 | 
				
			||||||
@@ -708,7 +722,7 @@ InvokeArgument<2>(5, string("Hi"), ByRef(foo))
 | 
				
			|||||||
calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by
 | 
					calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by
 | 
				
			||||||
value, and `foo` by reference.
 | 
					value, and `foo` by reference.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Default Action
 | 
					#### Default Action
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher       | Description                                            |
 | 
					| Matcher       | Description                                            |
 | 
				
			||||||
| :------------ | :----------------------------------------------------- |
 | 
					| :------------ | :----------------------------------------------------- |
 | 
				
			||||||
@@ -718,9 +732,11 @@ value, and `foo` by reference.
 | 
				
			|||||||
**Note:** due to technical reasons, `DoDefault()` cannot be used inside a
 | 
					**Note:** due to technical reasons, `DoDefault()` cannot be used inside a
 | 
				
			||||||
composite action - trying to do so will result in a run-time error.
 | 
					composite action - trying to do so will result in a run-time error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Composite Actions
 | 
					<!-- GOOGLETEST_CM0032 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                        | Description                                 |
 | 
					#### Composite Actions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|                                |                                             |
 | 
				
			||||||
| :----------------------------- | :------------------------------------------ |
 | 
					| :----------------------------- | :------------------------------------------ |
 | 
				
			||||||
| `DoAll(a1, a2, ..., an)`       | Do all actions `a1` to `an` and return the  |
 | 
					| `DoAll(a1, a2, ..., an)`       | Do all actions `a1` to `an` and return the  |
 | 
				
			||||||
:                                : result of `an` in each invocation. The      :
 | 
					:                                : result of `an` in each invocation. The      :
 | 
				
			||||||
@@ -734,9 +750,22 @@ composite action - trying to do so will result in a run-time error.
 | 
				
			|||||||
:                                : it.                                         :
 | 
					:                                : it.                                         :
 | 
				
			||||||
| `WithoutArgs(a)`               | Perform action `a` without any arguments.   |
 | 
					| `WithoutArgs(a)`               | Perform action `a` without any arguments.   |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Defining Actions
 | 
					#### Defining Actions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher                            | Description                             |
 | 
					<table border="1" cellspacing="0" cellpadding="1">
 | 
				
			||||||
 | 
					  <tr>
 | 
				
			||||||
 | 
					    <td>`struct SumAction {` <br>
 | 
				
			||||||
 | 
					         `template <typename T>` <br>
 | 
				
			||||||
 | 
					         `T operator()(T x, Ty) { return x + y; }` <br>
 | 
				
			||||||
 | 
					        `};`
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					    <td> Defines a generic functor that can be used as an action summing its
 | 
				
			||||||
 | 
					    arguments. </td> </tr>
 | 
				
			||||||
 | 
					  <tr>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|                                    |                                         |
 | 
				
			||||||
| :--------------------------------- | :-------------------------------------- |
 | 
					| :--------------------------------- | :-------------------------------------- |
 | 
				
			||||||
| `ACTION(Sum) { return arg0 + arg1; | Defines an action `Sum()` to return the |
 | 
					| `ACTION(Sum) { return arg0 + arg1; | Defines an action `Sum()` to return the |
 | 
				
			||||||
: }`                                 : sum of the mock function's argument #0  :
 | 
					: }`                                 : sum of the mock function's argument #0  :
 | 
				
			||||||
@@ -755,7 +784,7 @@ The `ACTION*` macros cannot be used inside a function or class.
 | 
				
			|||||||
These are used in `Times()` to specify how many times a mock function will be
 | 
					These are used in `Times()` to specify how many times a mock function will be
 | 
				
			||||||
called:
 | 
					called:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| Matcher           | Description                                            |
 | 
					|                   |                                                        |
 | 
				
			||||||
| :---------------- | :----------------------------------------------------- |
 | 
					| :---------------- | :----------------------------------------------------- |
 | 
				
			||||||
| `AnyNumber()`     | The function can be called any number of times.        |
 | 
					| `AnyNumber()`     | The function can be called any number of times.        |
 | 
				
			||||||
| `AtLeast(n)`      | The call is expected at least `n` times.               |
 | 
					| `AtLeast(n)`      | The call is expected at least `n` times.               |
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
## Googletest Mocking (gMock) Cookbook
 | 
					## gMock Cookbook
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- GOOGLETEST_CM0012 DO NOT DELETE -->
 | 
					<!-- GOOGLETEST_CM0012 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -824,6 +824,7 @@ A frequently used matcher is `_`, which matches anything:
 | 
				
			|||||||
```cpp
 | 
					```cpp
 | 
				
			||||||
  EXPECT_CALL(foo, DoThat(_, NotNull()));
 | 
					  EXPECT_CALL(foo, DoThat(_, NotNull()));
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0022 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Combining Matchers {#CombiningMatchers}
 | 
					#### Combining Matchers {#CombiningMatchers}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1138,6 +1139,8 @@ Note that the predicate function / functor doesn't have to return `bool`. It
 | 
				
			|||||||
works as long as the return value can be used as the condition in in statement
 | 
					works as long as the return value can be used as the condition in in statement
 | 
				
			||||||
`if (condition) ...`.
 | 
					`if (condition) ...`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0023 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Matching Arguments that Are Not Copyable
 | 
					#### Matching Arguments that Are Not Copyable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When you do an `EXPECT_CALL(mock_obj, Foo(bar))`, gMock saves away a copy of
 | 
					When you do an `EXPECT_CALL(mock_obj, Foo(bar))`, gMock saves away a copy of
 | 
				
			||||||
@@ -2147,7 +2150,11 @@ own precedence order distinct from the `ON_CALL` precedence order.
 | 
				
			|||||||
#### Using Functions/Methods/Functors/Lambdas as Actions {#FunctionsAsActions}
 | 
					#### Using Functions/Methods/Functors/Lambdas as Actions {#FunctionsAsActions}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If the built-in actions don't suit you, you can use an existing callable
 | 
					If the built-in actions don't suit you, you can use an existing callable
 | 
				
			||||||
(function, `std::function`, method, functor, lambda as an action. ```cpp
 | 
					(function, `std::function`, method, functor, lambda as an action.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0024 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```cpp
 | 
				
			||||||
using ::testing::_; using ::testing::Invoke;
 | 
					using ::testing::_; using ::testing::Invoke;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MockFoo : public Foo {
 | 
					class MockFoo : public Foo {
 | 
				
			||||||
@@ -3239,6 +3246,8 @@ If you are interested in the mock call trace but not the stack traces, you can
 | 
				
			|||||||
combine `--gmock_verbose=info` with `--gtest_stack_trace_depth=0` on the test
 | 
					combine `--gmock_verbose=info` with `--gtest_stack_trace_depth=0` on the test
 | 
				
			||||||
command line.
 | 
					command line.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0025 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Running Tests in Emacs
 | 
					#### Running Tests in Emacs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you build and run your tests in Emacs using the `M-x google-compile` command
 | 
					If you build and run your tests in Emacs using the `M-x google-compile` command
 | 
				
			||||||
@@ -4175,3 +4184,61 @@ prints the raw bytes in the value and hopes that you the user can figure it out.
 | 
				
			|||||||
[googletest's advanced guide](../../googletest/docs/advanced.md#teaching-googletest-how-to-print-your-values)
 | 
					[googletest's advanced guide](../../googletest/docs/advanced.md#teaching-googletest-how-to-print-your-values)
 | 
				
			||||||
explains how to extend the printer to do a better job at printing your
 | 
					explains how to extend the printer to do a better job at printing your
 | 
				
			||||||
particular type than to dump the bytes.
 | 
					particular type than to dump the bytes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Useful Mocks Created Using gMock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--#include file="includes/g3_testing_LOGs.md"-->
 | 
				
			||||||
 | 
					<!--#include file="includes/g3_mock_callbacks.md"-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Mock std::function {#MockFunction}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`std::function` is a general function type introduced in C++11. It is a
 | 
				
			||||||
 | 
					preferred way of passing callbacks to new interfaces. Functions are copiable,
 | 
				
			||||||
 | 
					and are not usually passed around by pointer, which makes them tricky to mock.
 | 
				
			||||||
 | 
					But fear not - `MockFunction` can help you with that.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`MockFunction<R(T1, ..., Tn)>` has a mock method `Call()` with the signature:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```cpp
 | 
				
			||||||
 | 
					  R Call(T1, ..., Tn);
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It also has a `AsStdFunction()` method, which creates a `std::function` proxy
 | 
				
			||||||
 | 
					forwarding to Call:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```cpp
 | 
				
			||||||
 | 
					  std::function<R(T1, ..., Tn)> AsStdFunction();
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To use `MockFunction`, first create `MockFunction` object and set up
 | 
				
			||||||
 | 
					expectations on its `Call` method. Then pass proxy obtained from
 | 
				
			||||||
 | 
					`AsStdFunction()` to the code you are testing. For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```cpp
 | 
				
			||||||
 | 
					TEST(FooTest, RunsCallbackWithBarArgument) {
 | 
				
			||||||
 | 
					  // 1. Create a mock object.
 | 
				
			||||||
 | 
					  MockFunction<int(string)> mock_function;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 2. Set expectations on Call() method.
 | 
				
			||||||
 | 
					  EXPECT_CALL(mock_function, Call("bar")).WillOnce(Return(1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 3. Exercise code that uses std::function.
 | 
				
			||||||
 | 
					  Foo(mock_function.AsStdFunction());
 | 
				
			||||||
 | 
					  // Foo's signature can be either of:
 | 
				
			||||||
 | 
					  // void Foo(const std::function<int(string)>& fun);
 | 
				
			||||||
 | 
					  // void Foo(std::function<int(string)> fun);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 4. All expectations will be verified when mock_function
 | 
				
			||||||
 | 
					  //     goes out of scope and is destroyed.
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Remember that function objects created with `AsStdFunction()` are just
 | 
				
			||||||
 | 
					forwarders. If you create multiple of them, they will share the same set of
 | 
				
			||||||
 | 
					expectations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Although `std::function` supports unlimited number of arguments, `MockFunction`
 | 
				
			||||||
 | 
					implementation is limited to ten. If you ever hit that limit... well, your
 | 
				
			||||||
 | 
					callback has bigger problems than being mockable. :-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0034 DO NOT DELETE -->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
## Googletest Mocking (gMock) for Dummies {#GMockForDummies}
 | 
					## gMock for Dummies {#GMockForDummies}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- GOOGLETEST_CM0013 DO NOT DELETE -->
 | 
					<!-- GOOGLETEST_CM0013 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -206,6 +206,8 @@ choosing the adaptor interface can make your code easier to write and more
 | 
				
			|||||||
readable (a net win in the long run), as you can choose `FooAdaptor` to fit your
 | 
					readable (a net win in the long run), as you can choose `FooAdaptor` to fit your
 | 
				
			||||||
specific domain much better than `Foo` does.
 | 
					specific domain much better than `Foo` does.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0029 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Using Mocks in Tests
 | 
					### Using Mocks in Tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Once you have a mock class, using it is easy. The typical work flow is:
 | 
					Once you have a mock class, using it is easy. The typical work flow is:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,6 +81,8 @@ void Bar(int* p);         // Neither p nor *p is const.
 | 
				
			|||||||
void Bar(const int* p);  // p is not const, but *p is.
 | 
					void Bar(const int* p);  // p is not const, but *p is.
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<<!-- GOOGLETEST_CM0030 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### I can't figure out why gMock thinks my expectations are not satisfied. What should I do?
 | 
					### I can't figure out why gMock thinks my expectations are not satisfied. What should I do?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You might want to run your test with `--gmock_verbose=info`. This flag lets
 | 
					You might want to run your test with `--gmock_verbose=info`. This flag lets
 | 
				
			||||||
@@ -124,6 +126,8 @@ using ::testing::_;
 | 
				
			|||||||
      .Times(0);
 | 
					      .Times(0);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- GOOGLETEST_CM0031 DO NOT DELETE -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### I have a failed test where gMock tells me TWICE that a particular expectation is not satisfied. Isn't this redundant?
 | 
					### I have a failed test where gMock tells me TWICE that a particular expectation is not satisfied. Isn't this redundant?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When gMock detects a failure, it prints relevant information (the mock function
 | 
					When gMock detects a failure, it prints relevant information (the mock function
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user