2008-12-10 5 views
2

J'ai parcouru les différents didacticiels concernant la bonne façon de piloter le contrôleur de test. Prendre les mesures suivantes:Test de l'unité de contrôleur ASP.NET MVC boggle

public ActionResult Login() 
    { 
     //Return the index view if we're still here 
     return View(); 
    } 

Word sur la rue est de câbler une méthode d'essai similaire à ceci:

[TestMethod] 
    public void TestLoginView() 
    { 
     //Set up an instance of the controller 
     var thisController = new UserController(); 

     //Invoke the index action 
     var actionResult = (ViewResult)thisController.Login(); 

     //Validate the test 
     Assert.AreEqual("Login", actionResult.ViewName); 
    } 

assert fonctionne comme prévu. Cependant, ce contrôleur possède une classe de base qui remplace la fonction OnActionExecuting afin de configurer les divers éléments de la page chrome (éléments de navigation, fil d'Ariane, etc.). Ce peu de logique ne se fait jamais toucher.

Je peux facilement tester les modèles utilisés dans le contrôleur, mais j'aimerais avoir mes tests sur la couche contrôleur. Des idées?

Répondre

5

La structure de test appelle uniquement la méthode particulière à tester, elle n'imite pas l'infrastructure ASP.NET MVC et déclenche tous les événements qui se produisent normalement. Je testerais votre logique OnActionExecuting dans des tests séparés pour vous assurer que cela fonctionne. Ce test doit uniquement tester la fonctionnalité de la méthode de contrôleur associée. Si vous avez des attentes particulières en fonction du déclenchement d'autres événements, vous devrez les simuler dans le contexte du contrôleur avant d'appeler la méthode du contrôleur.

+0

Je suis un peu préoccupé par le fait qu'il est possible de court-circuiter la pile d'événements de cette façon. – bxlewi1

Questions connexes