Railsチュートリアル7.3.4でハマった(ArgumentError)
4651 ワード
内容
タイトルの通りです。ArgumentErrorのエラーが発生しました。rails7系でrailsチュートリアルに取り組んだ際の内容です。
開発環境
ruby 3.1.1
rails 7.0.0
テストコード
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
実行結果
$ rails t
Running 18 tests in a single process (parallelization threshold is 50)
Started with run options --seed 3639
ERROR["test_invalid_signup_information", #<Minitest::Reporters::Suite:0x000000010c979b60 @name="UsersSignupTest">, 0.13537400000495836]
test_invalid_signup_information#UsersSignupTest (0.14s)
ArgumentError: 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>'
18/18: [================================================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.17766s
18 tests, 31 assertions, 0 failures, 1 errors, 0 skips
解決策
どうやらバージョンの違いによるエラーでした。
調べたところ困っている方も多かったので解決策を書いておきます。
post users_path,〜の「,」を消せば通ります。
改善済みコード
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
Author And Source
この問題について(Railsチュートリアル7.3.4でハマった(ArgumentError)), 我々は、より多くの情報をここで見つけました https://qiita.com/michikun06/items/013c3b828421f0b2056c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .