对于我的测试,我使用最新的Rspec,FactoryGirl,Guard与本地SQLite数据库的组合。当我开发BDD风格时,我经常会编写一个失败的测试,有可能在DB中留下一些垃圾数据,我想特别是如果有解释器错误的话。
我经常被迫删除数据库并重新迁移,以便将其恢复到干净状态,这既耗时又痛苦。似乎大多数时候Rspec自己的回滚机制做得很好,但有时它还不够。
处理这种情况的正确方法是什么?是否应该在每次执行单个测试时擦除数据库? database_cleaner会比Rspec做得更好吗?
谢谢!
答案 0 :(得分:1)
想到三种方式。
一,将测试包装在一个事务中,最后回滚。
二,使用可以快速创建/拆除的内存数据库
三,完全模拟你的数据库连接,并根据所做的数据库调用进行验证。