Un contrôleur de test unitaire doit tester le code des algorithmes dans vos méthodes d'action, pas dans votre couche de données. C'est une des raisons pour se moquer de ceux des services de données. Le contrôleur s'attend à recevoir certaines valeurs à partir des référentiels / services / etc, et à agir différemment lorsqu'il reçoit des informations différentes d'eux.
Vous écrire des tests unitaires pour affirmer le contrôleur se comporte de façon très spécifique dans des scénarios très spécifiques ou les circonstances. Votre couche de données est une partie de l'application qui fournit les circonstances de l'action de contrôleur de méthodes. Affirmer qu'une méthode de service a été appelé par le contrôleur est précieuse, car vous pouvez être certain que le contrôleur reçoit les informations en provenance d'un autre endroit.
Vérifier le type de la viewmodel retourné est précieuse, car, si le mauvais type de viewmodel est retourné, MVC va lancer une exception d'exécution. Vous pouvez empêcher que cela se passe dans la production par l'exécution d'un test unitaire. Si le test échoue, la vue peut lancer une exception dans la production.
Les tests unitaires peuvent être utiles parce qu'ils font de refactoring beaucoup plus facile. Vous pouvez changer la mise en œuvre, et d'affirmer que le comportement est toujours le même en vous assurant que tous les tests unitaires passent.
Réponse au commentaire n ° 1
Si la modification de la mise en œuvre d'une méthode à l'essai des appels pour que la modification ou la suppression d'une couche inférieure se moquaient de méthode, l'appareil d'essai doit également changer. Toutefois, cela ne devrait pas arriver aussi souvent que vous le pensez.
Le typique rouge-vert-refactoriser le flux des appels pour l'écriture des tests unitaires avant d' écrire les méthodes de test. (Cela signifie que pour une courte période de temps, votre test de code ne compile pas, et c'est pourquoi de nombreux jeunes et inexpérimentés, les développeurs ont de la difficulté à adopter rouge vert refactoriser.)
Si vous écrivez des tests unitaires d'abord, vous arriverez à un point où vous savez que le contrôleur a besoin d'obtenir des informations à partir d'une couche inférieure. Comment pouvez-vous être certain qu'il essaie d'obtenir cette information? En se moquant de la couche inférieure de la méthode qui fournit de l'information, et en affirmant que la couche inférieure de la méthode est invoquée par le contrôleur.
J'ai peut-être me suis mal exprimée quand j'ai utilisé le terme "modification de la mise en œuvre." Lorsque l'action d'un controller la méthode et les correspondants de l'unité de test doit être modifié pour modifier ou supprimer un moqué de la méthode, vous êtes vraiment changer le comportement du contrôleur. Refactoring, par définition, implique la modification de la mise en œuvre sans modifier le comportement global et les résultats attendus.
Rouge-vert-refactor est une démarche d'Assurance Qualité qui aide à prévenir les bogues et défauts dans le code, avant d'apparaître. Généralement, les développeurs de changement de mise en œuvre pour supprimer les bugs après leur apparition. Donc, pour résumer, les cas vous êtes inquiet au sujet ne devrait pas se produire aussi souvent que vous le pensez.