WHAT'S NEW?
Loading...

Yii 1.1 | Mockeryでもっこり1/4

さて、Mockeryだ。約束通りMockeryだ。

実はPHPUnitのepubをゲットしたので、全部読んだ後にもう一度PHPUnitやろうかと思ってたんだよね。

と言うのも、実は俺自身、あんまりテストとかってしたことがなくて、その重要性とかわかっていつつも、面倒臭いの一言でやらずじまいでいたわけよ。

そりゃ10年以上(15年くらい?)ほとんど一人で開発してれば、チーム開発手法(スクラムなどのアジャイル系)なんかさっぱりわからんし、GithubだってPull Requestなんか一度も使ったことがなかった。

今勤めてる会社は規模がデカイので、当然Githubなどのチーム開発向けのサービスも使ってるし、ちゃんとコードレビューもみんなでやってる。そしてPHPUnitをつかってテストもしてるんだ。

Seleniumというテストフレームワークもつかってるので、ブラウザで自動テストなんかもできてしまう。恐ろしい世の中だ。

テストなんか学生時代で終わらせておきたかった。このまま死ぬまでテストするのかと思うとめまいがしてくるけど、テストが通った時(グリーンな状態)は思ってたより嬉しかったりするんだよね。

というわけで、テストは大事だ。本能的には『テストなんか犬が喰えクソがッ!!』って思ってるけど、建前上、『テストは大事』ってことにして話を進めるので、気分の悪いお客様はとっとと去れ。

Mockeryとは?


Mockeryは前回簡単に説明したけど、例えばこんな感じだ。

A君はDBへのコネクションを貼るライブラリを開発中で、そのライブラリをつかって特定の条件でDBへのからデータを取得するスクリプトをB君が書いてるとしよう。

A君は休みがちだ。今日も体調不良で休んでいる。おそらくリウマチか痛風か、あまり深く詮索するとかわいそうなのでやめておこう。とにかく今日は来ていない。

しかし明日がスプリントの最終日。今日中にできてないと、B君の作業が終わらなくなってしまう。

そんな時、DBコネクションを張ったと仮定し、戻り値だけ返すテストができれば楽だ。今日中に実装できる。

というわけで、A君がつくり上げるであろうメソッドの戻り値を返すだけの、ハリボテのメソッドを作っておこうじゃないか、というのがモックというテストだ。

その他にも、どうしても本番サーバのAPIを叩かないと動かないメソッドなんかも、モックでAPIの戻り値を指定してしまえば、本番でしか動かないメソッドもローカルでテストすることが可能になる。

PHPUnitにもモックの機能が含まれているけど、Mockery使うほうが圧倒的に便利という話。

早速何か作ってみる

さて、Yiiで小さいアプリケーションを作ってみよう。

何か入力してポストすると、1文字目が文字列なら『とんねるず』、数字なら『ビビアン・スー』の画像を表示するという仕様だ。

なにも入力されなかった場合、なにも処理しない。エラーメッセージも表示しない。

入力できる文字数は半角で10文字まで。

ま、仕様としてはこんな感じでいいだろう。

そして文字列か数字かを判定するにはAPIを使わないといけない。そのAPIはあずかり知らぬ外部のサーバにあって、同じ機能を手元のローカル環境に構築するのは無理という認識。


次回は実際にコーディングしてみようと思うので乞うご期待。