Question

D'accord, j'adore NancyFx. Ecrire une application Web avec quelques lignes est tout simplement incroyable!

Mais comment tester vos NancyModules au niveau de l'unité?

Veuillez noter que je connais l ' excellent cadre de test fourni avec Nancy (Nancy.Testing on NuGet), qui donne d'excellents moyens de tester l'ensemble (presque) de la pile d'applications. Mais maintenant, je veux dire le test de niveau unit que j'utilise pour étoffer le contenu de mon NancyModule, à la manière TDD.

Puisque les routes sont définies dans le constructeur, souvent avec une expression lamda qui constitue l'ensemble de l'action, cela semble un peu "inaccessible" à partir d'un test unitaire. Mais ai-je manqué quelque chose d'évident sur la façon de tester les actions de l'itinéraire?

Par exemple, à quoi ressemblerait un test unitaire pour cette application simple?

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

   public ResourceModule(IProductRepository repo) : base("/products") 
   {
        Get["/list"] = parameters => { 
           return View["productList.cshtml", repo.GetAllProducts()];
        };
   }
}

Était-ce utile?

La solution

Vous pouvez faire un premier test de développement avec les outils de test que nous fournissons:

  • Lors de votre démarrage de test, configurez un programme de démarrage qui ne contient que le module que vous avez testé et tous les faux objets que vous souhaitez.
  • Dans votre test, exécutez une route spécifique (comme GET / list) - vous voudrez peut-être un petit assistant pour supprimer peut-être du code répété.
  • Affirmez ce qui revient - vous avez un accès complet aux objets de requête et de réponse (pour les en-têtes, les cookies, etc.), ainsi que des aides pour les corps HTML et, à venir dans la version 1.8, des aides pour la transmission de JSON, XML et uniquement des réponses de chaîne dans le corps.
  • Passez à l'itinéraire suivant, rincez et répétez.

Ok, donc vous n'êtes pas juste en train de tester le module, mais si vous regardez la pile d'appels, il ne se passe pas grand-chose avant ou après que vous ayez atteint votre route, donc ce n'est pas si important traiter dans mon livre :-) Si vous voulez vraiment tester le module dans un isolement complet, vous pouvez simplement le construire vous-même et piquer les routes individuelles en conséquence (ce ne sont que des dictionnaires dans le module).

Autres conseils

Dans le cadre de Nancy.Testing, vous pouvez utiliser le bootrapper configurable pour contrôler la configuration, y compris la configuration IoC.Cela devrait permettre de tester le module sans dépendances de niveau inférieur et activer TDD.

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