title: Moq: How to ensure Verify() reports on non-matching parameters
body: <p>I have the following unit test verification using Moq:</p>
  
  <pre><code>var mock = new Mock&lt;IDoSomethingUseful&gt;();
  
  var sut = new Thingy(mock.Object);
  sut.CallDoSomethingUseful();
  
  mock.Verify(
      somethingUseful =&gt; somethingUseful.Move(
          It.Is&lt;MyVector&gt;( 
              myVector =&gt; myVector.x == 123)), Times.Once, "This fail message needs to be hard-coded with myVector.x was not equal to 123");
  </code></pre>
  
  <ul>
  <li>How can I get Verify() to tell me that the predicate match failed? The test runner only reports that the call failed so I need to rely on the hard-coded message.</li>
  </ul>