Как определить Fabricator для класса пространства имен
Я хочу определить, что Fabricator для класса имеет пространство имен типа 'Foo::Bar'.
Скажи мне, как это может работать.
Здесь мои коды.
модели / foo.rb
class Foo
include Mongoid::Document
embedded_in :foo_container, polymorphic: true
field :xxx ....
end
модели / Foo / bar.rb
class Foo::Bar < Foo
field :yyy ....
field :zzz ....
end
Данные / переработчиков / foo_bar_fabricator.rb
Fabricator(:foo_bar, class_name: 'Foo::Bar') do
yyy 'MyString'
zzz 'MyString'
end
Когда я попытался создать объект Fabricatior на консоли parino, но произошла ошибка.
> Fabricate(:foo_bar)
> NoMethodError: undefined method `new?' for nil:NilClass
.... stack messages
Когда я попытался создать другой объект Fabricator, а не класс пространства имен, такой как "Пользователь", все пошло как надо.
2 ответа
Согласно документации Изготовления на создание объектов:
Чтобы использовать другое имя из класса, вы должны указать
from: :symbolized_class_name
как второй аргумент.
Поэтому должно работать следующее:
Fabricator(:foo_bar, from: 'Foo::Bar') do
yyy 'MyString'
zzz 'MyString'
end
Это сработало для меня
Fabricator(:foo_bar, class_name: :'Foo::Bar') do
xxx {Faker::Company.name}
yyy 'Mystring'
end