2007-05-15
每天一剂Rails良药之Extracting Test Fixtures From Live Data
关键字: Rails Extracting Test Fixtures From Live Data
Rails做单元测试时,我们自己手动去创建所有的fixtures会是个噩梦,有没有什么好的方案呢?
我们可以利用数据库里已有的数据,写一个rake tast来把数据库的数据复制出来到YAML文件里:
CreateFixturesFromLiveData/lib/tasks/extract_fixtures.rake
好了,现在我们运行rake extract_fixtures,则test/fixtures/目录下将生成每个表的数据的yml文件
我们可以利用数据库里已有的数据,写一个rake tast来把数据库的数据复制出来到YAML文件里:
CreateFixturesFromLiveData/lib/tasks/extract_fixtures.rake
desc 'Create YAML test fixtures from data in an existing database.
Defaults to development database. Set RAILS_ENV to override.'
task :extract_fixtures => :environment do
sql = "SELECT * FROM %s"
skip_tables = ["schema_info"]
ActiveRecord::Base.establish_connection
(ActiveRecord::Base.connection.tables - skip_table).each do |table_name|
i = "000"
File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file|
data = ActiveRecord::Base.connection.select_all(sql % table_name)
file.write data.inject({}) {|hash, record|
hash["#{table_name}_#{i.succ!}"] = record
hash
}.to_yaml
end
end
end
好了,现在我们运行rake extract_fixtures,则test/fixtures/目录下将生成每个表的数据的yml文件
评论
张云洁
2008-04-11
这个我看明白了,你好象没理解我的意思,我不是想要把全部的表都复制到夹具里面,而是我希望指定哪个表复制到夹具都可以!就是不知道该怎么修改!是不是传入一个参数还是什么?
hideto
2008-03-28
skip_tables = ["schema_info"] # 声明哪些表不要extract data
ActiveRecord::Base.connection.tables - skip_table的结果是要extract data的表名的数组
你仔细看看代码,将代码看懂,不要拿来主义。
ActiveRecord::Base.connection.tables - skip_table的结果是要extract data的表名的数组
你仔细看看代码,将代码看懂,不要拿来主义。
张云洁
2008-03-28
今天看到这个文章感觉很好,但是我还想问个问题,就是如果我 不想把全部表的内容都复制到夹具里面,而是我只想让需要的几个表或是一个表的内容复制到夹具里面,我在rake extract_fixtures的时候后面是不是要写什么, 我该怎么做?
发表评论
- 浏览: 681841 次
- 性别:

- 来自: BJ

- 详细资料
搜索本博客
我的相册
screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
Mnesia用户手册:三,构建 ...
要想创建disc_copies和disc_only_copies类型的表有两个前 ...
-- by hideto -
翻译www.djangobook.com之 ...
有个问题问一下: 我先配置了一个urlpatterns是这样的: r'^myd ...
-- by lyhapple -
Why OO sucks
gigix 写道lyl0035 写道为啥就没人想想,其实在面向对象的代码中也流露 ...
-- by hurd -
Why OO sucks
貌似又回到当年java vs c的年代。两种方式,不管是OO还是FP,仅是人处理 ...
-- by python -
大家可以抛弃Java踹死Djan ...
to phoenixup:1,你还别说,你举的什么Struts,Tapestry ...
-- by hideto






评论排行榜