测试运行失败后数据库脏了,如何解决?

时间:2012-05-28 23:24:49

标签: ruby-on-rails ruby-on-rails-3 tdd bdd

对于我的测试,我使用最新的Rspec,FactoryGirl,Guard与本地SQLite数据库的组合。当我开发BDD风格时,我经常会编写一个失败的测试,有可能在DB中留下一些垃圾数据,我想特别是如果有解释器错误的话。

我经常被迫删除数据库并重新迁移,以便将其恢复到干净状态,这既耗时又痛苦。似乎大多数时候Rspec自己的回滚机制做得很好,但有时它还不够。

处理这种情况的正确方法是什么?是否应该在每次执行单个测试时擦除数据库? database_cleaner会比Rspec做得更好吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

想到三种方式。

一,将测试包装在一个事务中,最后回滚。

二,使用可以快速创建/拆除的内存数据库

三,完全模拟你的数据库连接,并根据所做的数据库调用进行验证。