Pregunta

Estoy usando este código para configurar mi aplicación MVC en una [prueba] (para ser re-factorizada y se mudó a [Configuración], etc.):

// arrange
var mockSomeService = new Mock<ISomeService>();
mockSomeService.Setup(m => m.IsTrue()).Returns(false);   
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterProviders.Providers.Add(new FilterProvider(mockSomeService.Object));
var controller = new HomeController();

// act
var result = controller.Index() as ViewResult;

Por alguna razón, el autorizateTribe definido en FilterProvider nunca está pateando, pero cuando pruebo la aplicación MVC manualmente funciona bien.¿Falta algo en términos de configuración en esta prueba de integración?

¿Fue útil?

Solución

Los filtros se invocan como parte de la tubería de solicitud para que no se activen por una invocación directa de un método de acción como se obtiene en su prueba.

No creo que estés perdiendo mucho allí, porque la tubería de solicitud y su invocación de filtros han sido fuertemente probados por muchas otras personas, por lo que puede simplemente escribir su prueba directamente contra el objeto de filtro en su lugar.

Otros consejos

He estado trabajando en una biblioteca para ayudar a probar la aplicación ASP.NET-MVC con todos los filtros, validadores, enrutamiento y autenticación.Este ejemplo muestra cómo agregar un proveedor de filtro personalizado.Para usarlo, necesita agregar un paquete de nuget xania.aspnet.simulator.

using Xania.AspNet.Simulator;
.....

[Test]
public void CustomFilterProviderTest()
{
    // arrange
    var action = new AccountController().Action(c => c.ChangePassword(null));
    action.FilterProviders.Add(new CustomFilterProvider());

    // act
    var result = action.Execute();

    // assert
    Assert.AreEqual("Your Message", result.ViewBag.Message);
    Assert.IsTrue(result.ModelState.IsValid);
    Assert.IsInstanceOf<ViewResult>(result.ActionResult);
    ...
}

Más ejemplos se pueden encontrar en GitHub https://github.com/ibrahimbensalah/xania.Aspnet.Simulator / Tree / Master / Xania.aspnet.Simulator.tests

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top