Я пытаюсь написать единичный тест для метода, который имеет параметры. Мой метод - это метод TryParse для моего пользовательского объекта. Я использую .NET 4.5/5 с Visual Studio 2013. Это позволяет мне полностью реализовать частные/внутренние и статические объекты, используя объект PrivateType. Единственное, что, кажется, ускользнуло от меня, - это проверить параметр out, поскольку я не могу использовать это ключевое слово в методе InvokeStatic. Я ищу подходящее решение для тестирования этого архитектурного проекта.Как проверить метод с параметрами 'out'?
Использование для TryParse является частью процесса TypeConverter, как описано в WebAPI Parameter Binding post By Mike Wilson
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);
}
}
И TryParse должен быть внутренним? – Juan
Поскольку архитектурное проектирование ограничивает доступ к свойствам, которые не нужны снаружи (разделение внимания). Это заставляет наших разработчиков использовать правильные шаблоны кодирования при работе с объектами данных. – itanex