我在Rails中进行了迁移,将记录插入到数据库中.Category模型取决于此记录.由于RSpec在每个示例之前清除数据库,因此该记录丢失,而且似乎永远不会创建,因为RSpec似乎不会从迁移生成数据库.在数据库中创建/重新创建此记录的最佳方法是什么?它会在之前使用(:all)吗?
这不是RSpec清除数据库,而是Rails的rake:db:prepare任务将dev数据库的模式(但不是内容)复制到*_test db中.
是的,您可以使用before(:all)
,因为事务包含在每个单独的示例中 - 但是简单的fixture文件也可以执行相同的工作.
(对于这个问题,有一个更复杂的通用解决方案:转向面向服务的体系结构,其中'dev'和'test'服务将成为完全独立的实例.然后,您可以将测试数据库配置指向开发数据库您的测试服务,禁用rake:db:prepare,并在重新生成时从迁移构建测试服务.然后您可以测试迁移和数据转换.)