2010-08-12 7 views
0
  1. J'ai quelques objets compliqués à sortir (exemples de gemmes que j'utilise). Où puis-je centraliser ces talons pour les rendre disponibles à tous les tests? Comment puis-je effacer par programmation le DB entre les tests sans rake: test? Je souhaite exécuter rapidement des tests individuels via textmate, mais cela entraînera une erreur car il ne supprime pas la base de données entre les testsQuelques questions de tests unitaires Rails (en utilisant Shoulda + Factory girl)

  2. Les tests sont lents car ils doivent générer une instance Rails. Comment accélérer les tests? Surtout lors de l'écriture des tests et de vouloir exécuter rapidement les changements

+0

une autre option au lieu d'exécuter des tests via Textmate - utilisez autotest; http://ph7spot.com/musings/getting-started-with-autotest – house9

Répondre

2

1) Vous pouvez les mettre en test_helper.rb pour les mettre à la disposition tous les tests ou vous pouvez écrire votre propre module qui contient les méthodes et inclure ce module dans les tests qui nécessitent ces talons.

2) Vous pouvez mettre Model.destroy_all (ou .delete_all le cas échéant, qui serait plus rapide) dans votre méthode de configuration de test pour dépouiller les modèles qui ne vous intéresse plus à.

Cependant, si vous effectuez des tests en transactions (et votre base de données prend en charge les transactions) alors vous ne devriez pas avoir besoin d'effacer des données car la création des données et le test se déroulera dans une transaction qui sera ensuite annulée effacer les données automatiquement.

3) Pas si sûr sur celui-ci. J'ai eu ce problème beaucoup de développement sur Windows mais pas tellement sur * nix. Vous pourriez envisager une sorte de test continu, mais il y aura encore un retard sur la rétroaction. Il pourrait être utile d'étudier ce qui cause un démarrage si lent de l'environnement des rails - il peut s'agir d'un élément que vous pouvez ignorer dans votre environnement de test.