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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

1回答

1394閲覧

rails tutorial 11.3.3 で発生したエラーから抜けられません。お力をお貸しください。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/08/13 05:05

前提・実現したいこと

rails tutorialを進めております初学者です。
テストをパスする事が出来ず、困っています。
以下のエラーの該当箇所と思われる箇所を調べましたが、私には問題ないように思えどのように違うのかがわかりません。

1日考えたのですが、どうしてもわからず教えて頂けると大変助かります、よろしくお願いいたします。

発生している問題・エラーメッセージ

ec2-user:~/environment/sample_app (account-activation) $ rails test Running via Spring preloader in process 4401 Started with run options --seed 21781 Run options: --seed 21781--=---=---=---=---] 0% Time: 00:00:00, ETA: ??:??:?? # Running: . 38/2: [= ] 5% Time: 00:00:00, ETA: 00:00:0.. 38/4: [=== ] 10% Time: 00:00:00, ETA: 00:00:.. 38/6: [==== ] 15% Time: 00:00:00, ETA: 00:00:.. 38/8: [====== ] 21% Time: 00:00:00, ETA: 00:00:.... 38/12: [========= ] 31% Time: 00:00:00, ETA: 00:0. 38/13: [========== ] 34% Time: 00:00:01, ETA: 00:00:0.. 38/15: [============ ] 39% Time: 00:00:01, ETA: 00:00:. 38/16: [============= ] 42% Time: 00:00:01, ETA: 00:00:0. 38/17: [============== ] 44% Time: 00:00:01, ETA: 00:00:0. 38/18: [=============== ] 47% Time: 00:00:01, ETA: 00:00:0. 38/19: [================ ] 50% Time: 00:00:01, ETA: 00:00:0. 38/20: [================ ] 52% Time: 00:00:01, ETA: 00:00:0.. 38/22: [================== ] 57% Time: 00:00:01, ETA: 00:00:.. 38/24: [==================== ] 63% Time: 00:00:01, ETA: 00:00:.. 38/26: [===================== ] 68% Time: 00:00:01, ETA: 00:00: FAIL["test_should_redirect_update_when_logged_in_as_wrong_user", Minitest::Result, 1.420099104000002] test_should_redirect_update_when_logged_in_as_wrong_user#Minitest::Result (1.42s) Expected false to be truthy. test/controllers/users_controller_test.rb:44:in `block in <class:UsersControllerTest>' F 38/26: [===================== ] 68% Time: 00:00:01, ETA: 00:00:01 Failure: UsersControllerTest#test_should_redirect_update_when_logged_in_as_wrong_user [/home/ec2-user/environment/sample_app/test/controllers/users_controller_test.rb:44]: Expected false to be truthy. /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `method': undefined method `test_should_redirect_update_when_logged_in_as_wrong_user' for class `Minitest::Result' (NameError) from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70:in `format_rerun_snippet' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:23:in `record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:803:in `block in record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:802:in `each' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:802:in `record' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:334:in `run_one_method' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:321:in `block (2 levels) in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:320:in `each' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:320:in `block in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:360:in `on_signal' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:347:in `with_info_handler' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:319:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/line_filtering.rb:9:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `block in __run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `map' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:159:in `__run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:136:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/minitest-5.11.3/lib/minitest.rb:63:in `block in autorun' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application.rb:135:in `run' from /usr/local/rvm/gems/ruby-2.4.1/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require' from -e:1:in `<main>'

該当のソースコード

require 'test_helper' class UsersControllerTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) @other_user = users(:archer) end test "should redirect index when not logged in" do get users_path assert_redirected_to login_url end test "should get new" do get signup_path assert_response :success end test "should redirect edit when not logged_in" do get edit_user_path(@user) assert_not flash.empty? assert_redirected_to login_url end test "should redirect update when not logged in" do patch user_path(@user), params: { user: { name: @user.name, email: @user.email } } assert_not flash.empty? assert_redirected_to login_url end test "should redirect edit when logged in as wrong user" do log_in_as(@other_user) get edit_user_path(@user) assert flash.empty? assert_redirected_to root_url end test "should redirect update when logged in as wrong user" do log_in_as(@other_user) patch user_path(@user), params: { user: { name: @user.name, email: @user.email } } assert flash.empty? assert_redirected_to root_url end test "should redirect destroy when not logged_in" do assert_no_difference 'User.count' do delete user_path(@user) end assert_redirected_to login_url end test "should redirect destroy when logged in as a non-admin" do log_in_as(@other_user) assert_no_difference 'User.count' do delete user_path(@user) end assert_redirected_to root_url end end

試したこと

補足情報に記載しましたusers_contoroller.rbの情報と見比べ、間違いがないか探しました。しかしどこがどう間違っているかがわからず、質問をさせて頂きました。

補足情報(FW/ツールのバージョンなど)

class UsersController < ApplicationController
before_action :logged_in_user, only: [:index,:edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy

def index
@users = User.paginate(page: params[:page])
end

def show
@user = User.find(params[:id])
end

def new
@user = User.new
end

def create
@user = User.new(user_params)
if @user.save
UserMailer.account_activation(@user).deliver_now
flash[:info] = "Please check your email to activate your account"
redirect_to root_url
else
render 'new'
end
end

def edit

end

def update
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end

def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted"
redirect_to users_url
end

private

def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end def logged_in_user unless logged_in? store_location flash[:danger] = "Please log in." redirect_to login_url end end def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end def admin_user redirect_to(root_url) unless current_user.admin? end

end

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

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

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

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

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

guest

回答1

0

とりあえず、出現しているエラーメッセージを解読します

後半の、/usr/local/rvm/gems/ruby-2.4.1/gems/railties-5.1.4/lib/rails/test_unit/reporter.rb:70
以降はRails5.1.4側のバグ…というかminitestの仕様変更らしいです。

Rails5.1.5以降を使うなりminitest5.10.1以前を使うなり
テストに失敗しない限り表面化しないので無視するなり、ご自由に

5.10.1と5.10.2で、問題になりうる仕様変更出したらしいminitest側がちょっと酷いかもね


前半の

test_should_redirect_update_when_logged_in_as_wrong_user#Minitest::Result (1.42s) Expected false to be truthy. test/controllers/users_controller_test.rb:44:in `block in <class:UsersControllerTest>'

が問題です。
ざっと訳すと
test/controllers/users_controller_test.rbの44行目
assert flash.empty?
において、flash.empty?truthy(真)を期待してるけど、falseだよ

って感じです。

  • 実際に間違ったユーザーで変更リクエストを送ってみる
  • test/controllers/users_controller_test.rbの44行目直前でflashの中身について調べてみる

などで、どういったメッセージが出てくるのかを調べるのが原因を特定する上で有効かと思います

投稿2018/08/13 09:13

asm

総合スコア15147

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問