【问题标题】:How to load multiple fixture sets for the same model in rails如何在rails中为同一模型加载多个夹具组
【发布时间】:2012-04-27 01:26:04
【问题描述】:

虽然我通常更喜欢 Factory Girl,但我需要使用现有的设备来测试我正在开发的应用程序。

问题是我需要使用依赖于测试的夹具集,即我有多个用于同一模型的集合,需要根据我正在运行的测试加载。

在 Rails 0.x 的旧时代,有几个插件可以做到这一点。我如何使用 Rails 3+ 完成相同的任务?

提前致谢

【问题讨论】:

标签: ruby-on-rails testing fixtures


【解决方案1】:

您可以创建一些脚本文件来调用您的工厂来创建记录。然后在你的测试中 require 脚本。

【讨论】:

  • 如果你能提供这样的脚本作为开始的例子,那就太好了。
  • 认为这个例子很明显。 FactoryGirl.create(:model1) FactoryGirl.create(:model2, :attr1 => FactoryGirl.create(:model3))
【解决方案2】:

你说你是工厂女孩的粉丝,所以我不必向你推销它有多棒。

为什么不将这些设备转换为工厂? Convert Fixtures into Factory Girl in Rails 应该会有所帮助。

一旦您将数据作为 Factory Girl 中的工厂,我建议您利用其继承功能,如 https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md 所示:

您可以轻松地为同一个类创建多个工厂,而无需通过嵌套工厂来重复公共属性:

工厂:后做 标题“一个标题” 工厂 :approved_post 做 批准 真的 结尾 结尾 批准后 = FactoryGirl.create(:approved_post) approved_post.title # => "一个标题" 已批准_post.approved # => true

您也可以显式分配父级:

工厂:后做 标题“一个标题” 结尾 工厂:approved_post,父::post do 批准 真的 结尾

【讨论】:

  • 嗨,詹姆斯,感谢您花时间起草答案。然而,问题是如何加载特定于测试的夹具,而不是如何使用 Factory Girl 来替换夹具。如前所述,我很欣赏 Factory Girl 在几个项目中的优势,但最近我更喜欢使用固定装置。
猜你喜欢
  • 1970-01-01
  • 2011-01-25
  • 2012-03-27
  • 1970-01-01
  • 2013-12-29
  • 2011-09-08
  • 2018-08-16
相关资源
最近更新 更多