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)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)