Cela dépend.
La validation, la redirection, les messages temporaires, etc. peuvent se produire dans les contrôleurs. Vous pourriez argumenter que ces opérations devraient être testées comme vous le feriez avec vos modèles.
D'un autre côté, vous devriez viser l'état d'esprit 'Fat Model, Skinny Controller'. J'ai tendance à m'assurer que mes contrôleurs sont aussi stupides que possible. Mettez quelques tests de bout en bout sur les caractéristiques qui vous intéressent (sélénium, concombre, etc ...) et celles-ci feront en sorte que vos contrôleurs sont corrects. Supposons que nous développions une fonctionnalité pour répertorier certains éléments. Si le test de bout en bout de cette fonctionnalité est bon, le contrôleur est correct. Si cela casse, vous saurez que vous avez introduit une régression. En combinaison avec cela, j'ai seulement des tests qui vérifient que les vues correctes sont rendues et la réponse correcte se produit - redirection, json etc ... N'importe quel more testing on your controller et vous avez la logique au mauvais endroit.
Dans ASP.NET MVC2 par Steve Sanderson il fait quelques excellents points au sujet du raisonnement ci-dessus. Je le recommande complètement. Le fait de ne pas avoir ces tests de contrôleur simples est que je pourrais facilement ouvrir votre base de code, faire un simplement changer et casser votre application. Tant que les vues/réponses correctes se produisent, l'application reste fonctionnellement intacte.
Je devrais ajouter que tester un service est invoqué dans un contrôleur avec les paramètres corrects est si trivial, et rapide à faire, vous pouvez aussi bien le faire si vous testez vos contrôleurs indirectement. J'ai tendance à favoriser cette approche dans son ensemble. Donc, la réponse complète à votre question est oui, testez vos contrôleurs;)
La vue ne devrait pas avoir connaissance de vos requêtes - les résultats sont positifs. Les vues ne doivent pas être liées à la base de données. – Finglas
+1 pour le commentaire honnête sur le fait que la logique pour sélectionner la vue correcte ou viewmodel peut être très complexe sur certains cas et il vaut la peine de tester. –
@Finglas: Il semble y avoir un malentendu: Mon point de vue n'a aucune connaissance de la requête. C'est exactement pourquoi le contrôleur est en train de construire un viewmodel personnalisé avec le résultat de la requête. –