Domanda

Sto usando questo codice per configurare la mia app MVC in un [Test] (da riformare e spostato in [Setup] ecc.):

// 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;
.

Per qualche motivo, l'autorizzazione autorizzato definito in FilterProvider non viene mai calciato, ma quando testo manualmente l'app MVC funziona bene.Mi manca qualcosa in termini di installazione in questo test di integrazione?

È stato utile?

Soluzione

I filtri vengono richiamati come parte della pipeline di richiesta in modo che non vengano attivati da un'invocazione diretta di un metodo di azione come hai nel tuo test.

Non penso che ti stia perdiamo molto però, perché la pipeline di richiesta e il suo invocante di filtri sono stati pesantemente testati da molte altre persone, quindi puoi semplicemente scrivere il test direttamente contro l'oggetto del filtro.

Altri suggerimenti

Ho lavorato su una libreria per aiutare a testare l'applicazione ASP.NET-MVC con tutti i filtri, i validatori, il routing e l'autenticazione.Questo esempio mostra come aggiungere un fornitore di filtri personalizzati.Per usarlo, hai bisogno di aggiungere un pacchetto 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);
    ...
}
.

Altri esempi possono essere trovati su GitHub https://github.com/ibrahimbensalah/xania.Aspnet.simolatore / albero / master / xania.aspnet.simulator.tests

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top