J'ai complètement remplacé toutes les utilisations de variables d'instance dans mes tests rspec d'utiliser let(). J'ai écrit un quickie exemple pour un ami qui l'a utilisé pour enseigner à un petit Rspec classe: http://ruby-lambda.blogspot.com/2011/02/agile-rspec-with-let.html
Comme certains des autres réponses ici dit, nous allons() est paresseux évalué de sorte qu'il ne charge que ceux qui exigent le chargement. Elle Sèche jusqu'à la spécification et la rendre plus lisible. J'ai en fait porté le Rspec let() code pour l'utiliser dans mes contrôleurs, dans le style de inherited_resource gem. http://ruby-lambda.blogspot.com/2010/06/stealing-let-from-rspec.html
Le long de avec d'évaluation différée, l'autre avantage est que, combiné avec ActiveSupport::Inquiétude, et de la charge-tout-en spec/support/ comportement, vous pouvez créer votre propre spec mini-DSL spécifiques à votre application. J'ai écrit pour les tests contre Rack de repos et de ressources.
La stratégie que j'utilise est l'Usine-tout (via Machiniste+Faux/Faker). Toutefois, il est possible de l'utiliser en combinaison avec before(:each) blocs de précharger des usines pour toute une série d'exemple de groupes, ce qui permet les spécifications pour courir plus vite: http://makandra.com/notes/770-taking-advantage-of-rspec-s-let-in-before-blocks