Как использовать FactoryGirl с моделью, которая использует хэш в методе инициализации?

Кажется простым, но не удалось выяснить, как заставить это работать.

В model.rb:

def Model
  attr_accessor :width,
                :height

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

В factory файле models.rb:

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

Установка атрибутов в методе factory вызывает ошибку wrong number of arguments (0 for 1)

Работа в Ruby 1.9.3 без Rails, используя Factory.build. FactoryGirl 4.1.

EDIT: Дополнительная информация:

Использование RSpec: let(:model) { FactoryGirl.build :model }

Ответ 1

Это должно работать с вашим классом:

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.