Как определить 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
Другие вопросы по тегам