Como faço para testar a unidade de um método controlador que tem o atributo [Authorize] aplicado?
Eu pesquisei stackoverflow e pesquisei por quatro horas e ainda não encontrei nenhuma solução para o meu problema "trivial".
Se você escrever teste de unidade para o seu filtro[Authorize] ActionResult
, como você resolve o problema para fingir que o usuário está autenticado?
Eu tenho muitosActionResult
métodos que são filtrados com[Authorize]
e eu quero testar todos os meusActionResult
métodos, independentemente se eles são filtrados com[Authorize]
ou não.
Um exemplo simples do que eu quero dizer:
[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");
}
A partir de agora os testes nem sequer atingem o método ActionResult por causa do filtro [Authorize], a exceção é:System.NullReferenceException: Object reference not set to an instance of an object.