Question

J'utilise ce code pour configurer mon application MVC dans un [test] (pour être retégré et déplacé dans [Configuration], 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;

Pour une raison quelconque, le Authorizeattribute défini dans FilterProvider ne se lance jamais, mais lorsque je teste l'application MVC manuellement, cela fonctionne bien.Est-ce que je manque quelque chose en termes de configuration dans ce test d'intégration?

Était-ce utile?

La solution

Les filtres sont invoqués dans le cadre du pipeline de demande afin qu'ils ne soient pas déclenchés par une invocation directe d'une méthode d'action que vous avez dans votre test.

Je ne pense pas que vous ne manquez pas beaucoup là-bas, car le pipeline de demande et son invocation des filtres ont été fortement testés par beaucoup d'autres personnes, de sorte que vous pouvez simplement écrire votre test directement contre l'objet filtrant à la place..

Autres conseils

J'ai travaillé sur une bibliothèque pour aider à tester l'application ASP.NET-MVC avec tous les filtres, validateurs, routage et authentification.Cet exemple montre comment ajouter un fournisseur de filtres personnalisé.Pour l'utiliser, vous devez ajouter un package 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);
    ...
}

Vous trouverez plus d'exemples à GitHub https://github.com/ibrahimbensalah/xania.Aspnet.Simulator / arbre / maître / xania.aspnet.simulator.Test

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top