私の仕様では、AssetUrlHelper を使用します。
include ActionView::Helpers::AssetUrlHelper
ファイルの 1 つへの絶対 URL を表示するページをテストできるようにします。私asset_url
はトリックを行うべきだと思った:
asset_url(img.img_file(:medium))
残念ながら、仕様が実行されている間、これにはホスト名がありません。
(byebug) asset_url("blurg.jpg")
"/images/blurg.jpg"
...オプションとしてホスト名を指定しても、そうではありません:
(byebug) asset_url("blurg.jpg", host: "myhost.com")
"/images/blurg.jpg"
少なくとも 2 番目のケースは、ソースの次のコメントと矛盾するという点で奇妙です。
# If :host options is set, it overwrites global
# +config.action_controller.asset_host+ setting.
#
# ...
#
# asset_url "application.js" # => http://example.com/assets/application.js
# asset_url "application.js", host: "http://cdn.example.com" # => http://cdn.example.com/assets/application.js
これにより、今まで発見されていないバグが発生しました。私のテストでは、ビューが (間違って) 出力する相対ファイル パスとそこにあるはずの絶対 URL の間に違いはないと考えています。
myhost.com/images/blurg.jpg #what I expect the test to check for
/images/blurg.jpg #what the test actually checks for
ビューの内容は重要ではありません。私はそれを修正する方法を知っています。このケースと今後の参考のために、このヘルパーがテストで期待どおりに動作しない理由と、テストを修正する方法を知りたいです。