Question

Je suis en train de mettre en place une application sur rails et je viens juste de finir de faire des tests unitaires. Mon ami m'a dit qu'apparemment, les fixtures ne sont plus cool et que les gens utilisent maintenant RSpec ou shoulda. Je me demandais quels sont les avantages réels d'utiliser ces autres boîtes à outils. Toute information est appréciée.

-FREW

Était-ce utile?

La solution

Les frameworks RSpec et similaires sont des outils conçus pour faciliter le développement basé sur le comportement. Ce n’est pas une façon plus jolie d’écrire des tests, même s’ils aident à résoudre ce problème.

Vous trouverez ici de nombreuses informations sur BDD: http://behaviour-driven.org/ Et wikipedia: http://fr.wikipedia.org/wiki/Behavior_Driven_Development

Il y a trop d'avantages à énumérer ici, je vous recommande donc de parcourir un peu ce site.

Autres conseils

Personnellement, je préfère Shoulda à RSpec. Je trouve que Shoulda a une syntaxe moins magique que RSpec. Mon problème avec RSpec, c’est que oui, c’est très lisible lorsque je le lis à haute voix, mais lorsque j’écris, hmmmm, je ne suis jamais sûr de la manière dont une affirmation donnée devrait être écrite. Prag Dave explique le problème mieux que moi . Il a également aime Shoulda et en donne quelques exemples. .

Il y a deux choses différentes ici:

La première chose à faire est de savoir quel framework utiliser pour écrire des tests / spécifications. Ici, vous pouvez choisir entre Test :: Unit, RSpec, Shoulda, etc. Le choix est de savoir si vous voulez utiliser un TDD traditionnel (Test :: Unit) ou si vous préférez une autre façon de penser au comportement spécifié par les développeurs, comme David Chemlinsky (RSpec et dans une certaine mesure Shoulda).

La deuxième chose à faire est de savoir comment gérer les données de test. Il existe des calendriers et des alternatives Rails conçus avec d'autres objectifs, tels que le le plugin FixtureReplacement . Avant Rails 2.0, les problèmes rencontrés posaient des problèmes pratiques importants et bien documentés. Beaucoup de problèmes pratiques ont été résolus dans Rails 2.0. Cependant, les montages peuvent conduire à un couplage d’essais par inadvertance et certaines des solutions de rechange tentent de l’éviter.

RSpec est bien plus puissant car il est beaucoup plus facile de lire et d’écrire des tests. Il est également très élégant lorsqu’on utilise des mocs et des talons, un concept qui deviendra extrêmement utile une fois que vous aurez commencé à les utiliser dans vos tests. Essayez-le dans une application de test simple (NON RAILS!) Et vous verrez à quel point vos spécifications sont élégantes par rapport aux tests standard équivalents.

Découvrez le grand test de Josh Susser. Framework Dance-off pour une comparaison des frameworks de test Ruby populaires.

Si vous construisez une application volumineuse et que vous ne disposez pas d'une équipe capable d'écrire du code découplé pouvant être testé avec des tests de boîte noire et prête à utiliser pleinement / déboguer de nombreuses imitations. bouts, ne descendez pas la rue de l’usine.

Où que vous lisiez sur la fabrique Awesome Factories Are, vous verrez une mise en garde sur la possibilité que les usines ne soient pas réalisables dans une application de grande taille car elles sont un peu plus lentes que les appareils.

Mais "un peu plus lent" est vraiment des ordres de grandeur plus lent.

Les usines ne sont pas beaucoup plus faciles à coder que les fixtures qui utilisent des étiquettes pour les identifiants, tant que vous maintenez les fixtures organisées. Et dans certains cas, les usines sont plus difficiles à déboguer.

Ce soir seulement, j'ai converti une seule usine en fixtures et le temps d'exécution du fichier de test qui l'utilisait est passé de 65 secondes à 15 secondes, même si environ 15% seulement des tests de ce fichier de test utilisent cette usine.

Si vous utilisez minitest, vous pouvez exécuter vos tests dans un ordre aléatoire. cela révélera rapidement tout couplage de données entre les tests. (pas sûr si rspec a l'option de randomiser la commande de test)

Test :: Unit convient aux petites applications. Mais utiliser des frameworks de test tels que Shoulda ou RSpec présente de nombreux avantages. E. g. contextes !!

Je ne vois pas Shoulda et RSpec dans un rapport ou l'autre. J'utilise Shoulda comme substitut de RSpec pour les tests à assertion unique. J'aime vraiment les one-liners de Shoulda, mais écrire des matchers est beaucoup plus facile avec RSpec. Mon conseil est donc d'utiliser les différents outils de test là où ils conviennent le mieux.

Vous pouvez utiliser un framework de test comme Cucumber qui est encore plus rapide que RSpec ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top