APIを叩くコードのテスト
via. Sebastian Bergmann
第41回PHP勉強会でid:sasezakiさんに突っ込まれたServices_Hanako*1ですが、id:yandoさんも交えて「APIを叩くコードのテストって難しいよねぇ」という話をしてました。DBなどもそうですが、外部リソースを使うコードのテストって、ある意味キリがなくなりそうですよね。まあ、元々「外部リソースとのやりとりをブラックボックス」にしちゃって楽をしてたフシがあったのですが。。。
で、Sebastian Bergmannをきっかけに、「ブラックボックス」の部分もテストできるようにコンストラクタの引数を変えて、PHPUnit3のモックオブジェクトを使ってテストを書いてみました。
もうちょっと楽な方法がありそうなもんですが、とりあえずカバレッジは100%になります。まあ、「愚直に書くとこんな感じ」ということで。あ、HTTPRequest2から投げられる例外のテストがない。。。orz
あと、HTTP_Request2_Adapter_Mockを使ってもできそうだけど、PHPUnit_Framework_TestCase#onConsecutiveCallsに相当するメソッド/機能がないと辛そうかな。
*1:まあ、テストコードを用意してなかったのでいろいろ言われたわけですが。。。