如何使用FactoryGirl与在initialize方法中采用哈希的模型?

时间:2012-10-18 16:11:57

标签: ruby rspec initialization factory-bot

似乎很简单,但无法弄清楚如何让它发挥作用。

在model.rb中:

def Model
  attr_accessor :width,
                :height

  def initialize params
    @width = params[:width]
    @height = params[:height]
    ...

在工厂文件models.rb中:

FactoryGirl.define do
  factory :model do
    height 5
    width 7
  end
end

在factory方法中设置属性会引发错误wrong number of arguments (0 for 1)

使用Factory.build在没有Rails的Ruby 1.9.3中工作。 FactoryGirl 4.1。

编辑:更多信息:

使用RSpec:let(:model) { FactoryGirl.build :model }

1 个答案:

答案 0 :(得分:31)

这适用于您的班级:

FactoryGirl.define do

  factory :model do
    skip_create

    width 5
    height 9

    initialize_with { new(attributes) }
  end
end

- skip_create绕过通常在新对象上调用的默认save!操作。

- attributes方法使用new生成可传递给initialize_with的哈希值。