bundle exec rspec
実行時に Failure/Error:
なるエラーが出ました。
エラーメッセージの詳細はこちらです。
An error occurred while loading ./spec/requests/todo_spec.rb.
Failure/Error: require File.expand_path('../config/environment', __dir__)
FrozenError:
can't modify frozen Array: ["/usr/src/app/app/channels", "/usr/src/app/app/controllers", "/usr/src/app/app/controllers/concerns", "/usr/src/app/app/jobs", "/usr/src/app/app/mailers", "/usr/src/app/app/models", "/usr/src/app/app/models/concerns", "/usr/local/bundle/gems/actiontext-6.1.3.2/app/helpers", "/usr/local/bundle/gems/actiontext-6.1.3.2/app/models", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/controllers", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/jobs", "/usr/local/bundle/gems/actionmailbox-6.1.3.2/app/models", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/controllers", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/controllers/concerns", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/jobs", "/usr/local/bundle/gems/activestorage-6.1.3.2/app/models"]
Rails : RuntimeError - can't modify frozen Array when running rspec in rails
色々と検索しても、エラーの原因にピンポイントで当たる可能性は低いと思います。
少なくとも自分の場合は検索したどの記事も問題の解決にはつながりませんでした。
環境を見直す
Dockerがちゃんと上げてるか?
データベースコンテナを上げ忘れていないか確認します。
自分はDockerコンテナが上がってなかったので立ち上げました。
$ docker-compose up
テーブルがちゃんと作られているか?
test環境用のテーブルが作られているか?
FactoryBot に問題はないか?
自分の場合はspec/factories
以下の書き方に問題があったので直しました。
# bin/rails db:migrate RAILS_ENV=test
rails aborted!
NoMethodError: undefined method 'done' in 'item' factory
Did you mean? 'done { false }'
ここまで確認したらbundle exec rspec
自体は動くようになりました。
config 以下のファイルに変な修正を入れてないか?
検索して出てくる記事では config/application.rb などに変な修正を入れて挙動がおかしくなった人が多いようでした。
デフォルトのファイルから何かおかしな修正を入れていないか。
インストールした Gem に不備はないか、などの設定・定義周りを確認するのがいいと思います。
環境か設定に原因がある可能性が高いはずです。