Ruby on rails 如何在rspec中创建关联对象?
请帮忙解决这个问题。我需要通过gem factory_girl使对象成为“用户” 数据库模式:Ruby on rails 如何在rspec中创建关联对象?,ruby-on-rails,ruby-on-rails-4,rspec,factory-bot,rspec2,Ruby On Rails,Ruby On Rails 4,Rspec,Factory Bot,Rspec2,请帮忙解决这个问题。我需要通过gem factory_girl使对象成为“用户” 数据库模式: create_table "statuses", force: :cascade do |t| t.string "title" end create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypt
create_table "statuses", force: :cascade do |t|
t.string "title"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.integer "status_id", default: 0
t.string "name"
end
factories/users.rb:
FactoryGirl.define do
factory :user do
sequence(:name){ |i| "us#{i}" }
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwerty'
password_confirmation{ |u| u.password }
status_id FactoryGirl.create(:status0)
end
end
工厂/状态.rb:
FactoryGirl.define do
factory :status0 do
id 0
title 'user'
end
factory :status1 do
id 1
title 'manager'
end
factory :status2 do
id 2
title 'admin'
end
end
规格/控制器/用户\u控制器\u规格.rb:
describe UsersController, type: :controller do
describe 'users:index action' do
it 'check response status code for index page' do
user = FactoryGirl.create(:user)
visit users_path
expect(response).to be_success
end
end
end
但运行后测试控制台显示以下错误消息:
kalinin@kalinin ~/rails/phs $ rspec spec/controllers/users_controllers_spec.rb:104
/home/kalinin/.rvm/gems/ruby-2.0.0-p598/gems/activesupport-4.2.1/lib/active_support/inflector/methods.rb:261:in `const_get': uninitialized constant Status0 (NameError)
from /home/kalinin/.rvm/gems/ruby-2.0.0-p598/gems/activesupport-4.2.1/lib/active_support/inflector/methods.rb:261:in `block in constantize'
......
............
您可以使用
关联
关键字定义两个工厂之间的关联
所以,你们的工厂应该是这样的:
FactoryGirl.define do
factory :user do
sequence(:name){ |i| "us#{i}" }
sequence(:email){ |i| "us#{i}@ad.ad" }
password 'qwerty'
password_confirmation{ |u| u.password }
association :status
end
end
FactoryGirl.define do
factory :status do
sequence(:id){ |id| id }
title 'user'
end
end
关联:状态
将确保用户
和状态
工厂之间的关联
你可以看到更多的工厂女孩协会的例子