Как использовать 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
.