2009-12-23 9 views
1

Je cours des tests unitaires en utilisant Castle ActiveRecord qui interagissent avec une base de données. J'ai une procédure pour supprimer la base de données (si elle existe), puis la recréer, avant d'interagir avec elle dans chaque test. Si j'exécute un test, cela fonctionne correctement.Comment fermer ou "désinitialiser" Castle ActiveRecord?

Si j'exécute plusieurs tests, le second échoue car il ne peut pas supprimer la base de données.

Existe-t-il un moyen dans Castle ActiveRecord de lui demander de fermer et de lâcher la base de données?

Répondre

3

Au lieu de laisser tomber la base de données entière , je vous recommande de laisser tomber et de recréer le schéma .

Pour supprimer le schéma: ActiveRecordStarter.DropSchema();

Pour créer le schéma: ActiveRecordStarter.CreateSchema();

Pour REINITIALIZE ActiveRecord: ActiveRecordStarter.ResetInitializationFlag(); reconfigure il. Voir le base AR test class pour obtenir des conseils.

Pour les tests, je recommande de jeter un oeil à la nouvelle InMemoryTest.

Voir aussi: docs for ActiveRecord unit-testing.

+0

Cela semble fonctionner parfaitement. J'ai changé ma routine pour créer seulement la base de données si elle n'existe pas, et pour appeler DropSchema avant CreateSchema. Maintenant, mes tests se déroulent très bien. –

+0

En outre, où est cette classe de test de base? Je ne peux pas le trouver dans le téléchargement 2.0; a-t-il été ajouté depuis? (Je suppose que je pourrais toujours ajouter ma propre version.) Et pour quoi utiliserais-je InMemoryTest? –

+0

Cette classe de test de base est pour les tests internes ActiveRecord, vous ne le verrez pas dans la bibliothèque elle-même mais vous pouvez simplement la copier. –

Questions connexes