所以我正在为大型应用程序的单个功能编写验收测试。我需要大量的数据并且需要测试很多场景;所以我使用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'
答案 0 :(得分:1)
好的,所以这就是我解决这个问题的方法。
我使用了yaml_db gem和rake db:data:dump
来创建db / data.yml(dev db的转储)。
然后,我必须编写一个库和rake任务,将data.yml文件转换为单独的fixture文件。我运行这个新的rake任务一次来创建fixure文件。
然后,在我的规范开始时,我调用fixtures :all
,用所有灯具填充测试数据库。