2012-05-28 28 views
0

对于我的测试,我将最新的Rspec,FactoryGirl,Guard与本地SQLite数据库结合使用。当我开发BDD风格时,我会经常编写一个失败的测试,可能会在数据库中留下一些垃圾数据,尤其是如果有解释器错误。测试失败后脏数据库,如何解决?

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

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

谢谢!

回答

1

想起三种方法。

一,在事务中包装你的测试,并在最后回滚。

二,使用可创建/拆毁很快

三,完全模拟出你的数据库连接,并执行基于该由DB调用验证在内存中的DB。

相关问题