title: Multiple Moq It.Is<string>() Matching Arguments
body: <p>With Moq, is it valid to have more than one Matching Argument?</p>
  
  <pre><code>It.Is&lt;string&gt;() 
  </code></pre>
  
  <p>In this example I want the mockMembershipService to return a different ProviderUserKey depending on the User supplied.</p>
  
  <pre><code>mockMembershipService.Setup(
      x =&gt; x.GetUser(
        It.Is&lt;string&gt;(
          s =&gt; s.Contains("Joe")))
     .ProviderUserKey)
  .Returns("1234abcd");
  
  
  mockMembershipService.Setup(
    x =&gt; x.GetUser(
      It.Is&lt;string&gt;(
        s =&gt; s.Contains("Tracy")))
    .ProviderUserKey)
  .Returns("5678efgh");
  </code></pre>
  
  <p>The SetUp defaults to the second statement rather than evaluating each on its own merits.</p>