title: Moq - It.IsAny<string>() always returning null
body: <p>What may cause <code>It.IsAny&lt;string&gt;()</code> to return null at every call?  Am I incorrect in assuming that it is designed to return a non-null string?</p>
  
  <p>Here's the usage - where the Login method throws an ArgumentNullException for a null 2nd argument (connection string).  I was assuming that <code>It.IsAny&lt;string&gt;()</code> would provide a non-null string, which would bypass the ArgumentNullException.</p>
  
  <pre><code>var mockApiHelper = new Mock&lt;ApiHelper&gt;();
  mockApiHelper.Setup(m =&gt; m.Connect(It.IsAny&lt;string&gt;(), 
                                     It.IsAny&lt;string&gt;(), 
                                     It.IsAny&lt;string&gt;()));
  
  var repositoryPlugin = new RepositoryPlugin(mockApiHelper.Object);
  repositoryPlugin.Login(new CredentialsInfo(), It.IsAny&lt;string&gt;());
  
  Assert.IsTrue(repositoryPlugin.LoggedIn, 
      "LoggedIn property should be true after the user logs in.");
  </code></pre>