Rails/outil version spécifique d': Quelle est l'ampleur des tests unitaires?
Maintenant, actuellement, j'écris:
- Dispositifs de concombre (tests d'intégration) - ces de test sur le HTML/JS qui est retourné par notre application, mais parfois aussi des tests d'autres choses, comme les appels vers les services de tiers.
- RSpec contrôleur de tests (tests fonctionnels), à l'origine uniquement si les contrôleurs ont tout sens logique, mais maintenant de plus en plus.
- RSpec modèle de tests (tests unitaires)
Parfois, cela est tout à fait nécessaire; il est nécessaire de tester le comportement du modèle qui n'est pas totalement évident ou visible à l'utilisateur final. Lorsque les modèles sont complexes, ils devraient certainement être testé. Mais d'autres fois, il me semble que les tests sont redondantes. Par exemple, avez-vous une méthode de test foo
si elle n'est appelée que par bar
, et bar
est testé? Que faire si bar
est une simple méthode d'aide sur un modèle qui est utilisé par et facilement vérifiables dans un Concombre fonctionnalité? Avez-vous de tester la méthode dans rspec ainsi que le Concombre? Je me trouve en difficulté avec cela, comme écrit plus de tests prennent du temps et la maintenance de plusieurs "versions" de ce qu'est effectivement le même comportement, ce qui rend le maintien de la suite de test plus beaucoup de temps, ce qui rend les changements de plus en plus onéreux.
En bref, ne vous croyez qu'il y a un temps lorsque vous écrivez uniquement des dispositifs de Concombre est-elle suffisante? Ou faut-il toujours d'essai à tous les niveaux? Si vous pensez qu'il existe une zone grise, quel est votre seuil de "ce besoin d'une fonctionnelle/test de l'unité." Concrètement, que faites-vous actuellement, et pourquoi (ou pourquoi pas) pensez-vous que c'est suffisant?
EDIT: Voici un exemple de ce que pourrait être "test exagéré." Certes, j'ai été capable d'écrire ce assez rapidement, mais il est complètement hypothétique.