Ruby on Rails チュートリアル7章7.3.4のテストエラー

Ruby on Railsのチュートリアル7章の7.3.4でテスト実行時に下記エラーが出たので対処法を共有します。

Error:
UsersSignupTest#test_invalid_signup_information:
ArgumentError: wrong number of arguments (given 2, expected 1)
    test/integration/users_signup_test.rb:8:in `block (2 levels) in <class:UsersSignupTest>'
    test/integration/users_signup_test.rb:7:in `block in <class:UsersSignupTest>'

test/integration/users_signup_test.rb 変更前

require 'test_helper'

class UsersSignupTest < ActionDispatch::IntegrationTest

  test "invalid signup information" do
    get signup_path
    assert_no_difference 'User.count' do
      post users_path, params: { user: { name:  " ",
                                          email: "user@invalid",
                                          password: "foo",
                                          password_confirmation: "bar" } }
    end
    assert_template 'users/new'
  end
end

test/integration/users_signup_test.rb 変更後

require 'test_helper'

class UsersSignupTest < ActionDispatch::IntegrationTest

  test "invalid signup information" do
    get signup_path
    assert_no_difference 'User.count' do
      post users_path params: { user: { name:  " ",
                                          email: "user@invalid",
                                          password: "foo",
                                          password_confirmation: "bar" } }
    end
    assert_template 'users/new'
  end
end

8行目のカンマを消すと上手く通りました。Rubyの引数の仕様変わったんですかね?原因不明です。誰か教えてください。。。

2021/05/05追記:Rubyのバージョンが原因でした。Ruby 3.0以上だとダメでRuby 2.7ならエラー無くなりました。本記事の対処方法だと、10章のpatchで詰みます笑

参考:Ruby on Rails Tutorial Chapter 7 Integration Test Argument Error

よかったらシェアしてね!

この記事を書いた人

SimiBlogの管理人です。
都内国立大学の情報工学専攻の修士課程を卒業後、新卒で某企業の情報系技術職に就職しました。転職など新しいことを経験してみたいので、技術のキャッチアップをして発信しています。

■技術スタック
C / C++ / JavaScript / Python / Swift / HTML / CSS / Git / Jenkins

■趣味
旅行 / カメラ / 動画制作

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次
閉じる