実は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はあずかり知らぬ外部のサーバにあって、同じ機能を手元のローカル環境に構築するのは無理という認識。
次回は実際にコーディングしてみようと思うので乞うご期待。
facebook
twitter
google+
fb share