Возможно, проблема не в , что вы звоните, а в , где вы звоните. my_model = build(:my_model)
- это не тот синтаксис, который вы хотите использовать при написании спецификаций, и сообщение об ошибке выглядит, может быть, вы вызываете его извне спецификации c? Потому что, если вы вызываете его изнутри spe c, ошибка должна быть чем-то вроде ArgumentError: Factory not registered: my_model
. Сам по себе spe c должен выглядеть следующим образом:
# spec/models/my_model_spec.rb
require 'rails_helper'
describe MyModel do
let(:my_model) { build :my_model }
it { expect(my_model).to be_valid }
end
Я бы также указал название модели в вашей фабричной декларации (т. Е. factory :my_model, class: 'MyModel' do
). Если вы хотите поиграть со своими фабриками, вы можете запустить тестовую консоль:
# start rails console in 'test' environment
rails console test
my_model = FactoryBot.build :my_model
Обратите внимание, что вам нужно будет использовать FactoryBot.build
вместо build
в вашей тестовой консоли.
Если это не решит вашу проблему, пожалуйста, обновите ваше сообщение содержимым spe c, который вы пытаетесь запустить, как вы пытаетесь его запустить, и расширьте определение вашего файла spec/rails_helper.rb
, Поскольку вы новичок в RSpe c, я также советую проверить http://www.betterspecs.org/ на лучшие практики.