11

看起来很简单,但还没有弄清楚如何让它工作。

在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

在工厂方法中设置属性会抛出错误wrong number of arguments (0 for 1)

在没有 Rails 的 Ruby 1.9.3 中工作,使用Factory.build. 工厂女孩 4.1。

编辑:更多信息:

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

4

1 回答 1

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.

于 2012-10-18T16:25:48.727 回答