Je vais me faire l'avocat du diable, car je sais que je suis probablement minoritaire dans cette opinion : Je préfère en fait faire des tests de contrôleurs extrêmement poussés. Pour quelques raisons :
1) Je trouve qu'il est plus facile de tester systématiquement chaque chemin et chaque résultat au niveau du contrôleur qu'au niveau des tests d'intégration. Mes tests d'intégration se limitent principalement aux chemins heureux et à certains des chemins d'erreur les plus courants.
2) Un grand nombre de problèmes de sécurité potentiels se produisent au niveau du contrôleur. Des tests approfondis me permettent de m'assurer que rien de malveillant ne peut atteindre la logique de mon modèle.
3) C'est subjectif, mais cela m'oblige vraiment à réfléchir à certains des chemins de longue traîne par lesquels ma demande pourrait passer. Que se passe-t-il si quelqu'un essaie d'introduire un jeton de réinitialisation de mot de passe invalide dans l'URL ? Les tests de contrôleurs me permettent d'envisager toutes les options.
4) Contrairement aux tests d'intégration, ils sont assez simples à tester. Chaque action est juste une méthode ruby !