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

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

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

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

Ruby on Rails

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

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

0回答

1442閲覧

RailsテストのArgumentError: wrong number of arguments (given 2, expected 1)を解決したい

anonymous3510

総合スコア0

Ruby

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

Ruby on Rails

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

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2021/11/09 15:00

編集2021/11/10 09:41

環境

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の引数の判断方法

サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 2 - 新機能と変更点の総まとめ

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

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

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

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

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

winterboum

2021/11/10 00:22

これでは22行目がどこかわからない
anonymous3510

2021/11/10 09:43

ご指摘ありがとうございます。 22行目がわかるように修正いたしました。
winterboum

2021/11/10 13:25

はて、やっぱりそこですか。 違っているようには見えないなぁ、、、
anonymous3510

2021/11/10 13:43

了解です。 見ていただいてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問