Michal Hartls Railsチュートリアル第7章をフォローしています。Factorygirlgemをインストールしました。テストを実行すると、このエラーが発生し続けます。
Failures:
1) UsersController GET 'show' should be successful
Failure/Error: @user = FactoryGirl.create(:user)
ArgumentError:
Factory not registered: user
# ./spec/controllers/users_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
Finished in 0.66336 seconds 42 examples, 1 failure
Failed examples:
rspec ./spec/controllers/users_controller_spec.rb:14 # UsersController GET 'show' should be successful
Gemfile
group :test do
gem 'autotest', '4.4.6'
gem "autotest-growl", "~> 0.2.16"
gem "autotest-Rails", "~> 4.1.2"
gem "rspec", "~> 2.9.0"
gem 'rspec-Rails', '2.9.0'
gem 'webrat', '0.7.3'
gem "spork", '0.9.0'
gem 'annotate', '~> 2.4.1.beta'
gem "factory_girl", "~> 3.2.0"
end
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platform =>
私のuser_controller_spec.rbは
require 'spec_helper'
describe UsersController do
render_views
describe "GET 'show'" do
before(:each) do
@user = FactoryGirl.create(:user)
end
it "should be successful" do
get :show, :id => @user
response.should be_success
end
end
describe "GET 'new'" do
it "should be successful" do
get :new
response.should be_success
end
it "should have the right title" do
get :new
response.should have_selector('title', :content => "Sign up")
end
end
end
私のfactories.rbは
FactoryGirl.create :user do |user|
user.name "Mark Brown"
user.email "[email protected]"
user.password "foobar"
user.password_confirmation "foobar"
end
私が変更され
Factory(:name)
に
FactoryGirl.create(:user)
user_controller_spec.rb
の10行目で、剥奪の警告が表示されていました。私はそれがそれを修正するだろうと思ったが、今私はちょうど得ている。
Factory not registered: user
誰かが何が起こっているのか教えてもらえますか?
私はすでにそれを修正しました。
解決策は、Gemfileでgem 'factory_girl'
をgem 'factory_girl_Rails'
に変更することでした。
その章でFactoryGirlを最初に使用したときに同じエラーが発生しました。必要なのは、サーバーとSporkを使用している場合は再起動することだけでした。それが役に立てば幸い
最初にファクトリを定義し、作成しない場合はどうなりますか?これを試して:
FactoryGirl.define do
factory :user do
name "Mark Brown"
email "[email protected]"
password "foobar"
password_confirmation "foobar"
end
end
あなたはテストグループの下に宝石「factory_girl_Rails」が必要になります
Gemfileで、これに置き換える必要があります
gem "factory_girl_Rails", "~> 4.0"
の代わりに
gem "factory_girl", "~> 3.2.0"
私はIRBとしてpryを使用していました。宝石からそれを取り除くと、ファクトリーガールを正しく使用させることができました。
Rails c -e test
irb -> FactoryGirl.create(:user)
多分誰かがこじ開けを使用してこれを機能させる方法を説明することができます。