テストを書いていて謎のエラー
エラー内容は
1) User 認証機能 ユーザー登録したときに ホームに遷移すること
Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3.png"
こんな感じ
UTF-8 でデコードして要約すると
名称未設定のデザイン.png っていうルーティングがありません
っていう意味。謎
開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
前提
rspec でテストを書いている
本題
おそらく前回の日記に書いたんだけど
img タグがうまくいってないと謎のリクエストが流れるから
img タグに不備があるんだろうなって思った。
しかし一通り見直しても不備はない。
そもそも 名称未設定のデザイン.png なんて名前の画像はない
困った
head タグの中の
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
っていうタグをコメントアウトするとエラーが解消されることを発見する。
やはりおかしいのは css
そこで上記のタグのコメントアウトを解除して
css を全てコメントアウトしたけれどもエラーは解消されなかった。
ただここで css を全てコメントアウトしているのにきちんと css があたっていることに気づく
つまり、css が反映されていないことがわかった。
rails assets:precompile
上記のコードでプリコンパイルしてみる
すると css が反映された。
要するに rspec で css の変化を反映するにはプリコンパイルが必要
今回のエラーは前回 heroku に上げた時点のプリコンパイルの内容と
現在の css の内容が違うから起こっていた。
前回の css でも問題ないなら問題にならないけど
今回のケースでは背景の画像を前回と変えていて、
img のパスでは現実には画像がないからこのエラーが起こった
しんどかった