Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

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:まあ、テストコードを用意してなかったのでいろいろ言われたわけですが。。。