Version courte de mes questions :
- Quelqu'un peut-il m'indiquer de bonnes sources détaillées à partir desquelles je pourrais comment mettre en place des tests dans mon application MVC 3, en utilisant NUnit, Ninject 2 et Moq ?
- Est-ce que quelqu'un ici peut m'aider à clarifier comment Controller-Repository le découplage, le mocking, et l'injection de dépendances fonctionnent ensemble ?
Version plus longue de mes questions :
Ce que j'essaie de faire ...
Je commence actuellement à créer une application MVC 3, qui utilisera Entity Framework 4, avec une approche basée sur la base de données. Je veux faire les choses correctement, et j'essaie donc de concevoir les classes, les couches, etc. pour qu'elles soient hautement testables. Mais je n'ai que peu ou pas d'expérience en matière de tests unitaires ou de tests d'intégration, si ce n'est une compréhension académique de ces derniers.
Après de nombreuses recherches, j'ai opté pour l'utilisation de
- NUnit comme cadre de test
- Ninject 2 comme cadre d'injection de dépendances
- Moq comme cadre de simulation.
Je sais que la question de savoir quel est le meilleur cadre, etc., pourrait entrer en ligne de compte, mais à ce stade, je n'en sais vraiment pas assez pour me forger une opinion solide. J'ai donc décidé d'opter pour ces solutions gratuites qui semblent bien appréciées et bien entretenues.
Ce que j'ai appris jusqu'à présent ...
J'ai passé un certain temps à travailler sur ces questions, en lisant des ouvrages tels que
- Mise en œuvre des modèles de référentiel et d'unité de travail dans un système de gestion de l'information. ASP.NET MVC
- Construire des applications ASP.NET MVC testables
- NerdDinner Étape 12 : Tests unitaires
- Utiliser les modèles de référentiel et d'unité de travail avec Entity Framework 4.0
A partir de ces ressources, j'ai réussi à travailler sur la nécessité d'un modèle de référentiel, avec des interfaces de référentiel, afin de découpler mes contrôleurs et ma logique d'accès aux données. J'ai déjà écrit une partie de cela dans mon application, mais j'admets que je ne suis pas clair quant à la mécanique de l'ensemble, et si je fais ce découplage en supportant le mocking, ou l'injection de dépendance, ou les deux. En tant que tel, je ne serais certainement pas contre l'idée d'entendre ce que vous avez à dire à ce sujet. Toute clarté que je peux obtenir sur ce sujet m'aidera à ce stade.
Là où les choses se gâtent pour moi ...
Je pensais que je comprenais assez bien ces choses jusqu'à ce que j'essaie de me familiariser avec Ninject, comme décrit dans Construire des applications ASP.NET MVC testables cité plus haut. Plus précisément, je me suis complètement perdu au moment où l'auteur commence à décrire la mise en œuvre d'une couche de service, à peu près à la moitié du document.
Quoi qu'il en soit, je cherche maintenant d'autres ressources à étudier, afin d'essayer d'obtenir différentes perspectives sur ce sujet jusqu'à ce qu'il commence à avoir un sens pour moi.
En résumant tout cela, en le ramenant à des questions spécifiques, je me pose la question suivante :
- Quelqu'un peut-il m'indiquer de bonnes sources détaillées à partir desquelles je pourrais comment implémenter des tests dans mon application MVC 3, en utilisant NUnit, Ninject 2 et Moq ? NUnit, Ninject 2 et Moq ?
- Quelqu'un peut-il m'aider à comprendre comment Controller-Repository le découplage, le mocking, et l'injection de dépendances fonctionnent ensemble ?
EDIT :
Je viens de découvrir le Wiki officiel de Ninject sur Github, je vais donc commencer à travailler dessus pour voir si cela commence à clarifier les choses pour moi. Mais je suis toujours très intéressé par les réflexions de la communauté SO sur tout cela :)