W jednym z testów jednostkowych chcę sprawdzić, czy wszystkie publiczne metody zwracają typ ActionResult. Oto moja metoda badawcza:RuntimeType zamiast Type w C# Unit Test
[TestMethod]
public void Public_Methods_Should_Only_Return_ActionResults()
{
MethodInfo[] methodInfos = typeof(MyController).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach (MethodInfo methodInfo in methodInfos)
{
Assert.IsInstanceOfType(methodInfo.ReturnType, typeof(System.Web.Mvc.ActionResult));
}
}
Ten test wysadza na pierwszej metodzie z MyController:
[Authorize]
public ActionResult MyList()
{
return View();
}
z powodu następującego błędu:
Assert.IsInstanceOfType failed. Expected type:<System.Web.Mvc.ActionResult>. Actual type:<System.RuntimeType>.
Kiedy ustawić punkt przerwania na tej dochodzić i sprawdź metodę methodInfo.ReturnType, która jest typu Type i jest ActionResult.
Czy ktoś może mi wyjaśnić, dlaczego test wysadza w powietrze i co zrobić, aby działało?
Dzięki z góry, MR
Dziękuję bardzo. Teraz działa tak, jak tego chciałem. –