`

Factory Girl - Rails fixture 的完全替代工具

阅读更多

另外一个Rspec和Factory Girl的用法示例
I think you all know that, when using fixtures in your test, you keep switching between files to see what fixtures there are, always struggling with dependencies and conflicts.

There are a couple of helpers that solve this, but this is the best one I came across until know: Factory Girl

As the names says, it provides some kind of factory for your objects and instances.

The following snippet illustrates the definition of such a factory:


# define an incremental username
Factory.sequence :user do |n|
  "user#{n}" 
end

# define a user factory
Factory.define :user do |u|
  u.admin      false
  u.username { Factory.next(:user) } # lazy loaded
end

# define a project factory with associated user
Factory.define :project do |p|
  p.title 'myproject'
  p.creator   {|a| a.association(:user) } # again lazy loaded
end


Now, this factory can be used in your tests:


it "should do something" do
  Factory.create(:user) # creates a user
  Factory(:user) # creates another user (note the shortcut)
  @u = Factory.build(:user, :username => 'customuser') # only build, no save
  Factory.create (:project, :creator => @u)
end


I think you get the basic idea behind it, it’s actually pretty clean and makes tests a lot more readable without looking at fixtures.

Note: At the time of this writing, the attribute name does not work since there is a conflict (that will be resolved soon). Instead you have to use:


Factory.define :project do |p|
  p.add_attribute :name, "myname" 
end

分享到:
评论

相关推荐

    基于java的开发源码-Rails3消息队列系统 Sidekiq.zip

    基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip 基于java的开发源码-Rails3消息队列系统 Sidekiq.zip ...

    jquery-datatables-rails, 用于 Rails的jquery数据表 gem.zip

    jquery-datatables-rails, 用于 Rails的jquery数据表 gem jquery-datatables-rails 这个 gem 为 jQuery DataTables插件提供了方便,以便与 Rails 资产pipleine结合使用。 它提供所有基本的datatable文件,以及一些...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    turbo-sprockets-rails3, 加速你的Rails 3资产.zip

    turbo-sprockets-rails3, 加速你的Rails 3资产 用于 Rails 3.2.x的涡轮链轮 通过只根据源文件的哈希来重新编译已经更改的资产,从而加快 Rails 3 rake assets:precompile的速度只编译一次以生成指纹和非打印的资产...

    Angle-3.4-rails

    "Angle-3.4-rails"是一个专门针对Rails框架的项目,其包含了"backend-rails"和"backend-rails-seed"两个关键部分,旨在为开发者提供一个强大的后端开发环境和数据初始化工具。 一、Rails框架介绍 Rails是由David ...

    projectile-rails, 基于弹丸的Rails 模式.zip

    projectile-rails, 基于弹丸的Rails 模式 弹 Rails 概要弹 Rails 是在 GNU Emacs中使用 Ruby on Rails 应用程序和引擎的次要模式。 在内部,它是基于弹 。这意味着你可以在 greping ( 或者 acking ) 文件。运行测试...

    influxdb-rails-源码.rar

    《InfluxDB与Rails集成深度解析——以influxdb-rails源码为例》 InfluxDB,作为一款专为时间序列数据设计的高性能数据库,被广泛应用于监控、物联网、大数据分析等领域。Rails,作为Ruby on Rails框架的核心部分,...

    jquery-ui+jquery-ui-rails

    在这个案例中,我们看到`jquery-ui-rails-4.2.1.gem`,这是该gem的一个特定版本。这个gem负责将jQuery UI的库文件打包并整合到Rails的asset pipeline中,使得在Rails项目中使用jQuery UI变得简单。 要使用`jquery-...

    Ruby-Rails的Clojurescript集成类似于webpackrails

    `cljs-rails` 就是这样一个工具,它为Rails应用提供了Clojurescript的集成,类似于Webpack-Rails对JavaScript的处理方式。 Webpack-Rails是Webpack在Rails环境中的集成,Webpack是一款强大的模块打包工具,它允许...

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成.zip

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...

    jquery-ui-rails:Rails资产管道的jQuery UI

    jquery-ui-rails 这个gem为Rails打包了jQuery UI资产(JavaScript,样式表和图像),因此您不必再通过下载自定义软件包。 请参阅以查看哪些版本的jquery-ui-rails捆绑了哪些版本的jQuery UI。 警告:此gem与3.0.0...

    minitest-rails, Rails的Minitest集成.zip

    minitest-rails, Rails的Minitest集成 minitestRails 5的Minitest集成 安装gem install minitest-rails这将安装以下宝石:minitest配置创建一个新的Rail

    grape-swagger-rails, Swagger UI作为葡萄 Swagger gem的Rails 引擎.zip

    grape-swagger-rails, Swagger UI作为葡萄 Swagger gem的Rails 引擎 GrapeSwaggerRails Swagger UI作为葡萄 Swagger gem的Rails 引擎。安装将此行添加到你的应用程序的Gemfile中:gem 'grape-swagger-rails'

    Ruby-on-Rails-rails.zip

    Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。... web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中的工具。它很乐

    sclo-ror42-rubygem-rails-html-sanitizer-1.0.3-1.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    to_xls-rails:将Rails ActiveRecord或Mongid数据导出到Excel文件

    这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...

    foundation-rails:Rails基础

    基金会::铁路 Foundation :: Rails是一颗宝石,可以在即将到来的Rails项目中非常轻松地使用Foundation。安装将这些行添加到应用程序的Gemfile中: gem ' foundation-rails 'gem ' autoprefixer-rails ' 然后执行: ...

    jquery-validation-rails, 对 Rails 资产管道的jQuery验证.zip

    jquery-validation-rails, 对 Rails 资产管道的jQuery验证 :: 验证:: rails针对 Rails 资产管道的验证 。安装这里 gem将以下行添加到项目的Gemfile 中:gem 'jquery-validation-rails'在你的终端中运行以下命令:cd...

    rubocop-rails:专注于执行 Rails 最佳实践和编码约定的 RuboCop 扩展

    扩展专注于执行 Rails 最佳实践和编码约定。 注意:此存储库管理 rubocop-rails gem (>= 2.0.0)。 rubocop-rails gem (<= 1.5.0) 已重命名为 gem。 安装 只需安装rubocop-rails gem gem install rubocop-rails...

Global site tag (gtag.js) - Google Analytics