テスト時に、APIへのリクエストをstub化する用途で使ってみました。
bblimke/webmock
githubのページを見ればわかりますが、
rspec /test unit /minitest/cukeに対応など、とにかく高機能です。
他にも、fakeweb、wwなどがあるようですが、一番更新されてそうだったので
今回はこちらを選択。
使い方
詳細は、githubのページ見てください。
gem入れて、spec_helperでrequireするだけです。
require 'webmock/rspec'
あとは、stub_requestで自由自在。
stub_request(:get, "https://rubygems.org/api/v1/search.json?query=factory_girl"). to_return(:status => 200, :body => dummy_search_result)
to_returnのところは、ファイルもいけるようです。
他にも
今回は使ってませんが、マッチャも用意されているみたいです。
a_request(:post, "www.example.com").with(:body => "abc", :headers => {'Content-Length' => 3}).should have_been_made.once a_request(:post, "www.something.com").should have_been_made.times(3) a_request(:any, "www.example.com").should_not have_been_made a_request(:post, "www.example.com").with { |req| req.body == "abc" }.should have_been_made a_request(:get, "www.example.com").with(:query => {"a" => ["b", "c"]}).should have_been_made a_request(:get, "www.example.com").with(:query => hash_including({"a" => ["b", "c"]})).should have_been_made a_request(:post, "www.example.com"). with(:body => {"a" => ["b", "c"]}, :headers => {'Content-Type' => 'application/json'}).should have_been_made