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

  • URLをコピーしました!

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

情報工学の修士号を取得後、新卒で大手メーカーに就職。2022年にWeb系企業に転職。
役立つサービスや日々思ったことを発信中。
趣味は旅行、カメラ、動画制作。

コメント

コメントする

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

目次