ファクトリを使用して Rails アプリでログインをテストしようとすると、テンプレートが見つからないというエラーが発生し続けます。コントローラーにリダイレクトがありますが、作成アクションのテンプレートが必要です。これが私のセッションコントローラーです:
class SessionsController < ApplicationController
def new
end
def create
user = login(params[:email], params[:password], params[:remember_me])
if user
redirect_back_or_to dashboard_path, :success => "Logged in!"
else
flash.now.alert = "Email or password was invalid."
end
end
def destroy
logout
redirect_to root_url, :notice => "Logged out!"
end
end
そして私のgemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'jquery-rails'
gem 'pg'
gem 'heroku'
gem 'taps'
gem 'simple_form'
gem 'bootstrap-sass'
gem 'sorcery'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
group :test do
gem 'minitest'
gem 'capybara'
gem 'capybara_minitest_spec'
gem 'turn'
gem 'factory_girl_rails'
end
私の工場.rb:
FactoryGirl.define do
factory :user do
sequence(:email) { |n| "foo#{n}@example.com" }
password "secret"
password_confirmation "secret"
end
end
そして、ここに私のテストがあります:
「test_helper」が必要
describe "Login integration" do
it "logs in a user successfully" do
user = FactoryGirl.create(:user)
visit login_path
fill_in "Email", :with => user.email
fill_in "Password", :with => user.password
check "Remember me"
click_button "Log in"
current_path == "/dashboard"
page.text.must_include "Logged in!"
page.text.must_include "Your Dashboard"
end
end
しかし、そのテストを実行すると、次のエラーが発生します。
Missing template sessions/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
代わりに、factory girl を使用しない場合は、次のように問題なく動作します。
「test_helper」が必要
describe "Login integration" do
it "logs in a user successfully" do
visit signup_path
fill_in "Email", :with => "joey@ramones.com"
fill_in "Password", :with => "rockawaybeach"
fill_in "Password confirmation", :with => "rockawaybeach"
click_button "Create User"
current_path == "/"
page.text.must_include "Signed up!"
visit login_path
fill_in "Email", :with => "joey@ramones.com"
fill_in "Password", :with => "rockawaybeach"
check "Remember me"
click_button "Log in"
current_path == "/dashboard"
page.text.must_include "Logged in!"
page.text.must_include "Your Dashboard"
end
end
これを引き起こしている可能性のあるアイデアはありますか?