2009-11-02 4 views
4

Quel est le degré de granularité de l'utilisation des méthodes TDD/BDD pour développer une application? En particulier en ce qui concerne une application Rails.TDD/BDD en particulier pour une application Rails

Souhaitez-vous tester individuellement chaque champ, puis corriger la migration qui le fera passer? Donc, chaque domaine aurait sa propre migration? Que testeriez-vous réellement pour vous assurer que le terrain était le leur? J'essaie vraiment d'obtenir ma tête enveloppée par où commencer et comment granulaire pour obtenir. Je vais commencer et je gèle parce que je ne sais pas comment tester chaque petite chose.

La plupart des exemples que j'ai vus utilisent la validation comme exemple. Je sais qu'il y a beaucoup plus de code écrit avant et je ne sais pas comment tester les choses les plus basiques comme "devrait avoir un champ de prénom".

Toute aide est très appréciée.

MERCI!

Répondre

1

Je ne forerais pas aussi loin. En fait, je ne teste généralement pas mes migrations, et cela ne vaut certainement pas le temps (en général) de tester les getters et les setters. Tenez-vous-en aux tests qui vous enseignent le système et exprimez les exigences fonctionnelles non-triviales du code. Dans la mesure où commencer: Choisissez une condition que vous savez comment tester - une sans dépendances extérieures, une où le chemin est absolument clair. Écrivez le (s) test (s) pour décrire le comportement souhaité, mettez-le en œuvre et refactorisez le code pour supprimer la laideur que vous avez peut-être ajoutée pendant l'implémentation. Après avoir fait cela pour quelques fonctionnalités de la liste, vous trouverez probablement que certaines des fonctionnalités plus floues sont mises en évidence parce que vous avez fait les blocs de construction/dépendances dont ils ont besoin.

Un bon livre qui donne plus de détails sur les pratiques de test que AWDR ou The Way Rails est The RSpec Book, une version bêta qui est disponible sous forme électronique.

1

Utilisez-vous des outils pour TDD/BDD tels que Cucumber?

Ils ont de bonnes informations sur using Cucumber with Rails.

Écrivez votre fonction, puis un échafaudage pour que cette fonction réussisse ses tests. Lorsque vous souhaitez ajouter un autre champ à votre modèle, mettez d'abord à jour la fonction, laissez-la tomber en panne, puis écrivez une migration et mettez à jour votre vue pour que les tests soient réussis.

+0

Donc nous parlons de génération de code zéro ici non? Je veux dire, si vous créez un échafaudage w/3 champs, vous avez maintenant écrit le code w/pas de tests d'abord non? – Phil

+1

Les tests sont écrits en premier. Ils échoueront parce qu'il n'y a pas encore de code écrit pour leur permettre de passer. Ensuite, générez votre échafaudage qui permettra aux tests de passer. Une fois les tests passés, répétez. – Trevor

+1

Je pensais avec TDD, vous écrivez un test pour une chose d'une minute, alors vous écrivez juste assez de code pour le faire passer. Rédaction de tests pour un tas de code, puis en utilisant un générateur pour les faire passer semble défier cela. – Phil

Questions connexes