質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1245閲覧

Railsでテスト実行時のエラー文 "but rendering with 〜" がわかりません。

izumi_529

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/05/23 04:09

rials チュートリアルにて学習を進めていたところ、以下の事由で止まってしまいました。

【事由】
テスト実行時に表示される、予期せぬエラの発生

【質問】
テスト結果に表示されるエラー文の意味、解決策

【エラー発生時の作業】
ログインをわざと間違え、失敗した旨をフラッシュで表示する。
フラッシュの表示が他のページに移っても残るバグを再現するテストを作成
→ テスト実行時にフラッシュについてではない箇所でエラー発生

①controller

ruby

1class SessionsController < ApplicationController 2 # get login 3 def new 4 5 end 6 7 # post login 8 def create 9 user = User.find_by(email: params[:session][:email].downcase) 10 if user && user.authenticate(params[:session][:password]) 11 # ユーザーログイン後にユーザー情報のページにリダイレクトする 12 else 13 # エラーメッセージを作成する 14 flash[:danger] = 'Invalid email/password combination' # 本当は正しくない 15 render 'new' 16 end 17 end 18end

②view

ruby

1class SessionsController < ApplicationController 2 # get login 3 def new 4 5 end 6 7 # post login 8 def create 9 user = User.find_by(email: params[:session][:email].downcase) 10 if user && user.authenticate(params[:session][:password]) 11 # ユーザーログイン後にユーザー情報のページにリダイレクトする 12 else 13 # エラーメッセージを作成する 14 flash[:danger] = 'Invalid email/password combination' # 本当は正しくない 15 render 'new' 16 end 17 end 18end

③routes

ruby

1Rails.application.routes.draw do 2 3 get 'users/new' 4 root 'static_pages#home' 5 6 get '/home', to: 'static_pages#home' 7 get '/help', to: 'static_pages#help' 8 get '/about', to: 'static_pages#about' 9 get '/contact', to: 'static_pages#contact' 10 11 get '/signup', to: 'users#new' 12 13 get '/login', to: 'sessions#new' 14 post '/login', to: 'sessions#create' 15 get '/logout', to: 'sessions#destroy' 16 17 resources :users 18 19end 20

④test

ruby

1require 'test_helper' 2 3class UsersLoginTest < ActionDispatch::IntegrationTest 4 test "login with invalid imformation" do 5 get login_path 6 assert_template 'sessions#new' 7 post login_path , params: { session: {email: "",password: ""}} 8 assert_template 'sessions#new' 9 assert_not flash.empty? 10 get root_path 11 assert flash.empty? 12 end 13end 14

表示されたテストの結果

ubuntu:~/environment/Turtrial/sample_app (basic_login) $ rails t
Running via Spring preloader in process 7307
Run options: --seed 17280

Running:

...............F

Failure:
UsersLoginTest#test_login_with_invalid_imformation [/home/ubuntu/environment/Turtrial/sample_app/test/integration/users_login_test.rb:7]:
expecting** <"sessions#new"> but rendering with <["sessions/new", "layouts/_shim", "layouts/_header", "layouts/_footer", "layouts/application"]>**

rails test test/integration/users_login_test.rb:4

太字の箇所のルーティングに問題があるかと思うのですが、解決策がわかりません。
ご存知の方がいらっしゃいましたら、ぜひお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

assert_template 'sessions#new'

ruby

1assert_template 'sessions/new'

の間違いではないでしょうか?

投稿2020/05/23 04:43

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izumi_529

2020/05/23 04:48

できました!! ありがとうございます! 単純なタイプミスでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問