1

J'utilise Ninject dans mon projet ASP.NET MVC 3 et j'ai maintenant un graphe d'objets compliqué.Test des liaisons Ninject (ou de tout conteneur IoC)?

Je voudrais des tests unitaires pour m'assurer que tous mes types requis sont compatibles - pour le moment la seule façon dont je découvre est via la page d'erreur ASPX.

Je n'arrive pas à trouver de documentation sur la façon de procéder.

Est-ce aussi simple que l'écriture

_kernel.Get<IService>(); 

et de laisser l'exception échouer le test? Ou y at-il une façon plus intelligente de le faire en utilisant les crochets MVC pour DI?

+0

Le conteneur DI de l'injecteur simple possède une méthode 'Verify()' qui vérifie si tous les objets enregistrés peuvent être résolus. En appelant après la phase de configuration, il vous permet d'échouer rapidement. Je cours aussi la configuration complète dans un test unitaire pour échouer encore plus vite. Je ne sais pas quelles sont les fonctionnalités des autres conteneurs DI pour permettre cela. – Steven

Répondre

3

En plus des tests unitaires ordinaires, nous avons des tests d'intégration qui testent tout sauf l'interface utilisateur et la base de données, y compris les liaisons Ninject. Par conséquent, nous configurons tout comme dans la production et relions ces pièces à des simulacres. Cela testera également les liaisons Ninject.

Dans le cas de MVC, cela signifie que vous devez créer un noyau, charger les mêmes modules qu'en production et relier l'accès à la base de données. Créez ensuite une instance du contrôleur et appelez les actions que vous voulez tester et vérifiez si elles se comportent comme prévu.

Questions connexes