ArgumentError: Factory не зарегистрировано
Я пытаюсь запустить factory девушку для запуска с помощью rspec в моем приложении 4.1.1 rails.
Проблема в том, что я запускаю rspec
в моей командной строке, я получаю Failure/Error: verse = build(:verse) ArgumentError: Factory not registered: verse
.
Я теряюсь, потому что я проверил начальную страницу девушки factory, и многие ответы здесь на SO и я до сих пор не могу исправить эту проблему.
в моем Gemfile:
gem 'rails', '4.1.1'
group :development, :test do
gem 'rspec-rails'
gem "factory_girl_rails"
end
my spec_helper.rb файл:
require 'factory_girl_rails'
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
спецификации/контроллеры/API/verses_controller_spec.rb
describe "API Controller" do
describe "show a verse" do
it "should return status 200" do
verse = build(:verse)
get :show, id: verse.id
expect(response).to have_http_status(200)
end
it "should return json object" do
verse = build(:verse)
get :show, id: verse.id
JSON.parse(response.body).should == {'id' => verse.id}
end
end
end
спецификации/фабрики/verses.rb
FactoryGirl.define do
factory :verse do
line1 "A beautiful verse I stand"
end
end
Почему моя factory загрузка не выполняется правильно? Файлы в папке spec/factory должны загружаться автоматически.
Ответы
Ответ 1
Кажется, что проблема связана с использованием rspec/ factory девушки с spring.
Добавление:
config.before(:all) do
FactoryGirl.reload
end
в моей spec_helper.rb решила проблему.
Кредит: https://github.com/rails/spring/issues/88
Edit:
Еще один способ устранить проблему - вручную сообщить factory Girl, где загрузить factory. Добавьте это в свой spec_helper:
FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)]
FactoryGirl.find_definitions
Ответ 2
Кажется, это проблема с Factory Girl. Я исправил его (согласно отчету о проблеме) с помощью FactoryGirl.find_definitions
:
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
config.before do
FactoryGirl.find_definitions
end
end
Ответ 3
Это не обязательно связано с Spring. Существует issue, что означает, что factory_girl загружает пути, немного отличающиеся от rspec. Решение состоит в том, чтобы добавить к rails_helper следующее
FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryGirl.find_definitions
Предполагая, что помощник находится в файле engine_root/spec.
Это происходит, когда вы используете rspec в движке rails.