title: How to test method with 'out' parameter(s)?
body: <p>I am trying to write a unit test for a method that has out parameters. My method specifically is a TryParse method for my custom object. I am using .NET 4.5/5 with Visual Studio 2013. This allows me to fully realize private/internal and static objects using the PrivateType object. The one thing that seems to escape me is how to test for the out parameter as I cannot use this keyword in the InvokeStatic method. I am looking for the proper solution to test this architecture design.</p>
  
  <p>The use for TryParse is part of a TypeConverter process as outlined in the <a href="http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api" rel="noreferrer">WebAPI Parameter Binding post By Mike Wilson</a></p>
  
  <pre><code>public class MyFilter
  {
      public string Field { get; set; }
      //... removed for brevity
  
      internal static bool TryParse(string sourceValue, out MyFilter filter)
      {
          //... removed for brevity
      }
  }
  
  public class MyFilterTests
  {
      [TestMethod]
      [TestCategory("TryParse")]
      public void TryParseWithTitleOnly()
      {
          var stringSource = "{field:'DATE.FIELD'}";
  
          MyFilter tryParseOut = null;
  
          var target = new PrivateType(typeof(MyFilter));
  
          var tryParseReturn = target.InvokeStatic("TryParse", stringSource, tryParseOut);
  
          var expectedOut = new MyFilter()
          {
              Field = "DATE.FIELD"
          };
  
          Assert.IsTrue((bool)tryParseReturn);
          Assert.AreEqual(expectedOut, tryParseOut);
      }
  }
  </code></pre>