###前提・実現したいこと
Rspecでログイン認証のテストがどうしてもうまくいかないです。
現在はモックを使って試しているのですが、エラーが出てしまいます。
下記のログイン認証のテストの仕方をご教授ください!
(Device等のログイン認証のライブラリは使っていません。)
###発生している問題・エラーメッセージ
1) SessionsController sessions#create 正常なログイン情報でログインした場合 TOP画面へ遷移されること Failure/Error: user = User.find_by(login_id: params[:session][:login_id]) NoMethodError: undefined method `[]' for nil:NilClass # ./app/controllers/sessions_controller.rb:9:in `create' # ./spec/controllers/sessions_controller_spec.rb:20:in `block (4 levels) in <top (required)>'
###Rspec
ruby
1# /sessions_controller_spec.rb 2 3describe 'sessions#create' do 4 context '正常なログイン情報でログインした場合' do 5 before do 6 user = create(:user) 7 allow(User).to receive(:find_by).and_return(user) 8 end 9 it 'TOP画面へ遷移されること' do 10 post :create 11 expect(response).to redirect_to top_path 12 end 13 end 14end
###Controller
ruby
1# /sessions_controller.rb 2class SessionsController < ApplicationController 3 4 skip_before_action :user_logged_in? 5 6def create 7 user = User.find_by(login_id: params[:session][:login_id]) 8 if user == user.authenticate(params[:session][:password]) 9 log_in user 10 redirect_to top_path 11 else 12 redirect_to login_path, flash: { alert: '※ログイン情報が正しくありません'} 13 end 14 end
###Factory
ruby
1# /user.rb 2 3FactoryGirl.define do 4 factory :user do 5 login_id 'test' 6 password 'password' 7 last_name '田中' 8 first_name '正' 9 group_id 1 10 role_id 1 11 end 12emd
###補足情報(言語/FW/ツール等のバージョンなど)
rails -v 5
rspec -v 3.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/18 11:02
2016/10/18 11:06 編集
2016/10/19 06:47