Как решить фабрика неправильная число ошибок аргументов
#rspec test code
@room = FactoryGirl.build(:room)
#factory definition
factory :room do
length {10}
width {20}
end
#code implementation
class Room
attr_accessor :length, :width
def initialize(length,width)
@length = length
@width = width
end
end
Запуск rspec приводит к этой ошибке при попытке построить @room
ArgumentError: неверное количество аргументов (0 для 2)
2 ответа
FactoryGirl
в настоящее время не поддерживает инициализаторы с аргументами. Так что это терпит неудачу, когда он пытается сделать Room.new
когда ты бежишь build
,
Один простой обходной путь для этого может состоять в том, чтобы обезопасить ваши классы в вашей тестовой установке, чтобы обойти эту проблему. Это не идеальное решение, но вы сможете запустить свои тесты.
Таким образом, вам нужно будет выполнить одно из следующих действий (только в коде настройки теста):
class Room
def initialize(length = nil, width = nil)
...
end
end
или же
class Room
def initialize
...
end
end
Вопрос обсуждается здесь:
https://github.com/thoughtbot/factory_girl/issues/42
...и здесь:
https://github.com/thoughtbot/factory_girl/issues/19
Теперь это так. Протестировано на версии 4.1:
FactoryGirl.define do
factory :room do
length 10
width 20
initialize_with { new(length, width) }
end
конец
Справка: документация
Что было полезно для меня, так это включение вывода отладки для линтинга FactoryBot:
FactoryBot.lint verbose: true
см документации для деталей