どうした?
ある程度開発を進めたタイミングでRailsのバージョンを5系から6系へアップしたところ、テストでエラーが出ました。
環境
$ ruby -v
=> ruby 3.1.2p20
$ rails -v
=> Rails 6.1.7
(アップデート前: 5.2.8.1)
事象
minitestにて
get "/"
assert_template "home/top"
の結果
expecting <"home/top"> but rendering with <["rescues/blocked_host", "rescues/layout"]>
と返ってきました。
もちろんバージョンアップ前はするすると通っていたテストですし、ローカルサーバー上でも問題ありません。
解決策
参照元の解決策①を試しましたが、テストでのエラーは解決しませんでした。
そこで、config/enviroments/test.rb
にも同様の対処をしたところ、テストはGREENになりました。
config/enviroments/test.rb
Rails.application.configure do
#省略
config.hosts << "www.example.com"
#省略
end
考察
参照元の通り、ホストの指定をすることでテストがwww.example.comへのアクセスを許可しているようです。
参照元では解決策②としてテスト実行時にテスト環境を使うようにしていますが、私の事象の場合はテスト時はテスト環境が動いているようです。
よって私の事象の場合、解決策②は不要だと考えられます。
(そもそもDockerではない。)