環境
Rails 6.0.4
Ruby 3.0.2
Docker
RailsチュートリアルにDockerで環境構築をして開発を行っています
現在10章まで進んでいるのですが、minitestでテストを行っており、機能実装前の受け入れテストコードを毎度書いていくのですが、テストコードを書くたびに必ず、「呼び出し側の引数の数」と「メソッド側の仮引数」ズレでエラーが起きてしまいます
エラー文
terminal
1$ docker-compose exec web bundle exec rails test 2Running via Spring preloader in process 2821 3Started with run options --seed 33308 4 5ERROR["test_should_redirect_update_when_not_logged_in", #<Minitest::Reporters::Suite:0x0000aaab11031490 @name="UsersControllerTest">, 0.3196210830064956] 6 test_should_redirect_update_when_not_logged_in#UsersControllerTest (0.32s) 7Minitest::UnexpectedError: ArgumentError: wrong number of arguments (given 2, expected 1) 8 test/controllers/users_controller_test.rb:22:in `block in <class:UsersControllerTest>' 9 10test/21: [============================================================================= ] 87% Time: 00:00:01, ETA: 00:00:00 11 24/24: [========================================================================================] 100% Time: 00:00:01, Time: 00:00:01 12 13Finished in 1.93922s 1424 tests, 46 assertions, 0 failures, 1 errors, 0 skips 15
エラーが出ているところのテストを記述している部分
一部コードをコメントアウトしておりますが、こちらのコードでも同様のエラーとなってしまいます
test/controllers/users_controller_test.rb
rails
1require 'test_helper' 2 3class UsersControllerTest < ActionDispatch::IntegrationTest 4 5 def setup 6 @user = users(:michael) 7 @other_user = users(:archer) 8 end 9 10 test "should get new" do 11 get signup_path 12 assert_response :success 13 end 14 15 test "should redirect edit when not logged in" do 16 get edit_user_path(@user) 17 assert_not flash.empty? 18 assert_redirected_to login_url 19 end 20 21 test "should redirect update when not logged in" do 22 patch user_path(@user), params: { user: { name: @user.name, email: @user.email } } # 22行目 23 assert_not flash.empty? 24 assert_redirected_to login_url 25 end 26 27 # test "should redirect edit when logged in as wrong user" do 28 # log_in_as(@other_user) 29 # get edit_user_path(@user) 30 # assert_flash.empty? 31 # assert_redirected_to root_url 32 # end 33 34 # test "should redirect update when logged in as wrong user" do 35 # log_in_as(@other_user) 36 # patct user_path(@user), params: { user: { name: @user.name, email: @user.email } } 37 # assert_flash.ematy? 38 # assert_redirected_to root_url 39 # end 40end
test/test_helper.rb
rails
1ENV['RAILS_ENV'] ||= 'test' 2require_relative '../config/environment' 3require 'rails/test_help' 4require "minitest/reporters" 5Minitest::Reporters.use! 6 7class ActiveSupport::TestCase 8 fixtures :all 9 include ApplicationHelper 10 11 # テストユーザーがログイン中の場合にtrueを返す 12 def is_logged_in? 13 !session[:user_id].nil? 14 end 15 16 # テストユーザーとしてログインする 17 def log_in_as(user) 18 session[:user_id] = user.id 19 end 20end 21 22class ActionDispatch::IntegrationTest 23 24 # テストユーザーとしてログインする 25 def log_in_as(user, password: 'password', remember_me: '1') 26 post login_path, params: { session: { email: user.email, password: password, remember_me: remember_me } } 27 end 28end
これまでやったこと
どうしてこのエラーが発生するのかは、色々ググってみて下記の記事を参考に知ることができましたが、実際自分のコードのどのようにあてはめたら良いのかわかりません。お力を貸してください!
ArgumentError: wrong number of arguments (given A, expected B)のA,Bの引数の判断方法
あなたの回答
tips
プレビュー