如何在Rails中预先填充的数据库上运行测试?

时间:2015-03-27 16:39:01

标签: mysql ruby-on-rails rspec tdd rake

所以我正在为大型应用程序的单个功能编写验收测试。我需要大量的数据并且需要测试很多场景;所以我使用Sequel Pro预先填充了一个mysql数据库。

显然,appname_test数据库适用于应用程序中的其他测试。我想知道如何在测试开始时(在第一个上下文语句之前)将.sql文件(这是一个内容的sql转储)加载到这个数据库中。

我是新手,所以这对我来说是全新的。提前感谢您的帮助。

更新

我已经使用yaml_db gem来转储dev db(db:data:dump),然后将其加载到测试db(db:data:load ENV_RAILS=test)中。但是,只要我运行我的规范,测试数据库就会被擦干净!有没有办法从spec文件中运行db:data:load ENV_RAILS=test。我试过了:

require 'rake'
Rake::Task['bundle exec db:data:load ENV_RAILS=test'].invoke

但它说Don't know how to build task 'be db:data:load ENV_RAILS=test'

1 个答案:

答案 0 :(得分:1)

好的,所以这就是我解决这个问题的方法。

我使用了yaml_db gem和rake db:data:dump来创建db / data.yml(dev db的转储)。

然后,我必须编写一个库和rake任务,将data.yml文件转换为单独的fixture文件。我运行这个新的rake任务一次来创建fixure文件。

然后,在我的规范开始时,我调用fixtures :all,用所有灯具填充测试数据库。