例として、Googleのロゴ画像の取得をテストします。
画像は該当のURL( http://www.google.com/images/logos/ps_logo2.png )から予め手動で取得しspec/support/files
の下に置いておきます。
test_spec.rb
context "ウェブから画像を取得する時" do
before do
@url = "http://www.google.com/images/logos/ps_logo2.png"
path = Rails.root.join("spec/support/files", "ps_logo2.png")
FakeWeb.register_uri(:get, @url,
body: Rack::Test::UploadedFile.new(path),
content_type: "image/png")
end
# 以下略
こうしておけば、テストの中で通常のコードで使うのと同じ形で@url
を参照できます。
bodyにRack::Test::UploadedFile.new(path)
を渡すのが肝ですね。
参考:Stub a image url and return an image
P.S.
以下のgemが必要になります。
$ gem install rack-test
$ gem install fakeweb