Szukałem stackoverflow i googled cztery kilka godzin i nadal nie znalazłem żadnego rozwiązania dla mojego "trywialnego" problemu.W jaki sposób mogę przetestować metodę kontrolera, dla której zastosowano atrybut [Autoryzuj]?
Jeśli piszesz test jednostkowy dla przefiltrowanego [Authorize] ActionResult
, w jaki sposób rozwiązujesz problem, aby sfałszować tego użytkownika, który został uwierzytelniony?
mam dużo ActionResult
metod, które są filtrowane z [Authorize]
i chcę, aby przetestować wszystkie moje ActionResult
metodami niezależnie od tego czy są one filtrowane [Authorize]
czy nie.
Prostym przykładem tego, co mam na myśli:
[TestMethod]
public void Create_Get_ReturnsView()
{
// Arrange
var controller = new UserController();
// Act
var result = controller.Create();
// Assert
Assert.IsNotNull(result as ViewResult);
}
[Authorize]
public ActionResult Create()
{
return View("Create");
}
Jak teraz testy nawet nie trafić metody ActionResult powodu [Autoryzacja] Filtr, rzucony wyjątek to: System.NullReferenceException: Object reference not set to an instance of an object.
Jest coś, czego nam nie pokazujesz. Test, który pokazujesz, nie wykonuje * żadnych * filtrów akcji. Może masz kod, który będzie, ale nie ma go w twoim pytaniu. Co powiesz na cały stos wywołań dla błędu, na początek? –