`
hideto
  • 浏览: 2678408 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

每天一剂Rails良药之Extracting Test Fixtures From Live Data

    博客分类:
  • Ruby
阅读更多
Rails做单元测试时,我们自己手动去创建所有的fixtures会是个噩梦,有没有什么好的方案呢?
我们可以利用数据库里已有的数据,写一个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文件
分享到:
评论
3 楼 张云洁 2008-04-11  
这个我看明白了,你好象没理解我的意思,我不是想要把全部的表都复制到夹具里面,而是我希望指定哪个表复制到夹具都可以!就是不知道该怎么修改!是不是传入一个参数还是什么?
2 楼 hideto 2008-03-28  
skip_tables = ["schema_info"]  # 声明哪些表不要extract data
ActiveRecord::Base.connection.tables - skip_table的结果是要extract data的表名的数组

你仔细看看代码,将代码看懂,不要拿来主义。
1 楼 张云洁 2008-03-28  
今天看到这个文章感觉很好,但是我还想问个问题,就是如果我 不想把全部表的内容都复制到夹具里面,而是我只想让需要的几个表或是一个表的内容复制到夹具里面,我在rake extract_fixtures的时候后面是不是要写什么, 我该怎么做?

相关推荐

    Rails 4 Test Prescriptions

    总之,《Rails 4 Test Prescriptions》是一本不可多得的好书,它不仅仅是一本关于测试技巧的手册,更像是一位导师,引导着开发者们走向更为成熟和系统化的测试之路。通过阅读本书,无论是对于个人技能的提升还是整个...

    rails 5 test prescriptions build a healthy codebase

    Your Ruby on Rails application is sick. Deadlines are looming, but every time you make the slightest change to the code, something else breaks. Nobody remembers what that tricky piece of code was ...

    Rails 4 Test Prescriptions.pdf

    Rails 4 Test Prescriptions 不仅仅是一本介绍测试基础知识的书籍,它还深入探讨了如何根据项目的特定需求来选择和实现有效的测试策略。通过阅读本书,无论是新手还是有经验的开发者都能学到很多关于如何在 Rails ...

    rails-builds-test-源码.rar

    在"rails-builds-test-源码.rar"这个压缩包中,我们很显然会接触到一个使用Rails框架构建的测试项目。接下来,我们将深入探讨Rails的几个关键知识点,以及如何通过源码来理解其工作原理。 1. **Gemfile与Gemfile....

    Rails 4 Test Prescriptions(Pragmatic,2014)

    Does your Rails code suffer from bloat, brittleness, or inaccuracy? Cure these problems with a regular dose of test-driven development. Rails 4 Test Prescriptions is a comprehensive guide to how tests...

    ruby on rails seed data

    Tens of thousands of Rails applications are already live. People are using Rails in the tiniest part-time operations to the biggest companies. “It is impossible not to notice Ruby on Rails. It has ...

    Rails Recipes英文版(清晰文字pdf+源码)

    Ruby三神书之一(其余的两本是Agile.Web.Development.with.Rails和Ruby For Rails,在我的资源列表也有) Rails is large, powerful, and new. How do you use it effectively? How do you harness the power? And, ...

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    Embrace the full stack of web development, from styling with Bootstrap, building an interactive user interface with Angular 2, to storing data quickly and reliably in PostgreSQL. With this fully ...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    Rails相关电子书汇总

    Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以简洁、高效的代码和“约定优于配置”的理念著称。此压缩包中的"rubyonrails21-cn.pdf"可能是...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    rails2.3.2

    Rails 作为 Ruby 的主要应用框架之一,两者密切相关。 在压缩包的文件名称列表中,只有一个条目 "rails",这可能意味着压缩包内包含了 Rails 框架的核心文件,如 gemspec 文件、库文件、初始化脚本等。开发者可以...

    Ruby-Rails实战之B2C商城开发

    在本项目"Ruby-Rails实战之B2C商城开发"中,我们将深入探索使用Ruby on Rails这一强大的Web开发框架来构建一个完整的B2C(Business-to-Consumer)在线商城。Rails是Ruby语言的一个核心框架,以其MVC(Model-View-...

    rails_model_test_hello_world

    自述文件版本和设置$ ruby -vruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]$ rails -... $ rails new rails_model_test_hello_world -T -m ~/rtfb_template.rb$ cd rails_model_test_hello_world$ rail

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    Rails之道.pdf(最新版)

    《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入的...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

Global site tag (gtag.js) - Google Analytics