fakeweb使ってみた
よくある他のWebAPIにアクセスするコードのテストどう書くねん問題。一つの解としてはmoroの人のwwだと思うんだけど、検索しづらすぎるのと、ちょっと書きたいぐらいだと大袈裟かなぁと。で、そんなわけで、fakewebを使ってみた。
fakewebは簡単にいうと、スクリプト内で特定のURLに対するアクセスを誤魔化してレスポンスを返すようにするもの。
使い方は簡単で、
FakeWeb.register_uri(:get, "http://example.com/hoge", :body => "hoge")
と書くだけで、スクリプト内でのhttp://example.com/hogeへのgetでのアクセスが常にhogeが返ってくるようになる。当然http://example.com/hogeへの実際のアクセスは発生していない。他にも、getでもpostでも一回のregister_uriの呼び出しで登録する方法(anyって指定)があったり、アクセス回数によって返す値を変更したり(第3引数を、レスポンスのhashの配列にする)することができる。
で、URLへのfakeを解除したい場合は、
FakeWeb.clean_registry
ちょう簡単。成功と失敗の2パターンぐらいしかない場合は、自分はこれで十分かなぁと思った。まぁ、もうちょっと複雑なこと(パラメーターによって返すものを変えたいとか)をやりたくなるとwwの方がいいと思う。
で、最後にこんな素晴しいものを紹介してる僕等のレシピ先輩にはいつも感謝しています。
Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)
- 作者: 島田浩二,設樂洋爾,村田賢太,前田智樹,谷口文威
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/25
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 349回
- この商品を含むブログ (77件) を見る