title: GoogleMock: how to expect precisely one call with a certain argument, and see diagnostic on failure?
body: <p>Maybe a finesse question, my problem is that if I write:</p>
  
  <pre><code>EXPECT_CALL(mock, handleMessage(_)).Times(0);                           // expectation #1
  EXPECT_CALL(mock, handleMessage(Pointee(IsLike(aSpecificMessage))));    // expectation #2
  </code></pre>
  
  <p>... and method <code>handleMessage</code> is called once, but with a different argument (not <code>aSpecificMessage</code>), then the failure looks like:</p>
  
  <pre><code>Mock function called more times than expected - returning default value.
      Function call: handleMessage(0x8b5378)
            Returns: false
           Expected: to be never called
             Actual: called once - over-saturated and active
  </code></pre>
  
  <p>Google Mock doesn't print the diagnostic on why the argument didn't match the predicate in expectation #2.
  This is presumably because expectation #1 is the first to fail (?).</p>
  
  <p>If I omit expectation #1, then the failure is verbose, along the lines of:</p>
  
  <pre><code>Google Mock tried the following 1 expectation, but it didn't match:
  
  ../../test/Test.cpp:143: EXPECT_CALL(mock, handleMessage(Pointee(IsLike(aSpecificMessage))))...
    Expected arg #0: points to a value that &lt;....&gt;
             Actual: 0xfeaf18, which points to &lt;.....&gt;
  </code></pre>
  
  <p>I'm using a custom Matcher <code>IsLike</code> and I went through the trouble of generating very explicit mismatch reasons, I'd like them to be printed. I also would not want to give up expectation #1 because that goes in a "default" section and by default I want no calls on that mock throughout the rest of the tests.</p>