2

私の仕様では、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

ビューの内容は重要ではありません。私はそれを修正する方法を知っています。このケースと今後の参考のために、このヘルパーがテストで期待どおりに動作しない理由と、テストを修正する方法を知りたいです。

4

1 に答える 1