タイトルの通りのエラーが発生し、ググってもなかなか解決しなかったので、他の人も同様の問題を抱えた際に参考にできればいいなと思ったので備忘として記事に残します。
##困ったこと
railsチュートリアル3章で$ rails generate controller StaticPages home help
実行後、testの中身を変えずにtestしたところ 以下のエラーが表示されテスト自体ができない
$rails t
/Users/kiyomasa/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/capybara-3.23.0/lib/capybara/selector/filters/node_filter.rb:9:in
`initialize': wrong number of arguments (given 4, expected 3) (ArgumentError)
#以下略
##結論
Rubyのバージョンが3.0.0で行ってましたが、Capybaraはバージョン3.31.0ではruby3.0.0では動かなくなる(記事執筆時点)
なので
- capybaraのバージョンを対応したものに上げるか
- Rubyのバージョンを下げるか
で対応する
自分の場合、capybara公式 で最新のgemをインストールしてやってみたが現状変わらなかったため、
以下記事を参考にRubyのバージョンを2.7.2へ下げたところ、うまくいった
(他のgemfileのバージョンコンフリクトも発生しなくなった)
※質問したサイト
https://teratail.com/questions/321440
###以降 自分で調査した内容 (見る必要はありませんが、参考に)
##wrong number of argumentsでエラーを調査
エラー内容から、推測
capybara gemで使うnode_filter.rb
でwrong number of arguments (given 4, expected 3)
=引数エラーが出ているらしい
と判明
???だったので調べる
https://qiita.com/TOSHIMITSU_MIYACHI/items/82417ab6126d816af4e4
どうやら
wrong number of arguments (a for b)
a=呼び出し側の引数の数
b=メソッド側の引数の数
があっていないということらしい。
あっていないと言われても、自分で作ったメソッドでもないし、もしかしてgemのバージョンがおかしいのか?と調査
##capybaraについて調査
元々gemfileはrailsチュートリアルから丸々コピーして使っていた(一部エラー出てバージョンを変えたりはしてみた)
https://qiita.com/morrr/items/0e24251c049180218db4
Capybara = UIテストのためのrubyフレームワーク
らしい
理解はしたけど、エラーには関係ないよな。と振り出しに戻る
###teratailから回答が...!!
terateilで質問する→回答なし→一晩考える→朝回答きていて確認
→結論の通り、
Rubyのバージョンが3.0.0、
一方Capybaraはバージョン3.31.0ではruby3.0.0では動かなくなる(記事執筆時点)
なので
- capybaraのバージョンを対応したものに上げるか
- Rubyのバージョンを下げるか
で対応する
ということでした。
全く考えもつかなかったので、今後は気をつけるようにしたいと思います。
###Ruby のバージョンを落とすやり方
https://qiita.com/_am_/items/c1dbeb11f40bbbac8fd9