Symfony2 + PHPUnitではじめてのテスト(モック編)
はじめに
単体テスト、機能テストについては、下記を参照してください。
Symfony2 + PHPUnitではじめてのテスト(単体テスト編)
Symfony2 + PHPUnitではじめてのテスト(機能テスト編)
モックを使ってみる
依存しているオブジェクトをシミュレートするのが難しいときに、オブジェクトをモック(代用)に置き換えるのが非常に有効です。
sopraでは、決済モジュールをモックに置き換えてテストしたりしています。
決済モジュールをテストする際は、サンドボックス環境を利用するのですが、エラーを細かくシミュレートできないので、エラーの内容ごとに分岐する処理を作る場合に困ってしまいます。
そこでPHPUnitのMockオブジェクトを利用し、期待通りの処理結果(エラーオブジェクト)を返却するようにテストケースを実装します。
実装サンプル
さいごに
自分自身、時間がないことを言い訳に、テストコードを書かずに、これまで過ごしてきましたが、一度はじめてしまうと、癖になりそうな感覚はあります。
テストを書いて良かったなと思うことは、以下のとおりです。
- テストコードを実行してみつかる不具合がある - テストコードを書いているうちに、実装部分のリファクタリングが進むことがある - 同じ条件で繰り返しテストを実行できる - とにかく安心できる - テストコードはときに取り扱い説明書になる
ただ、小さいチームがはじめてテストコードを書く場合は注意が必要かと思います。(あくまで個人的な意見です)
- はじめること、続けることが大事 - テストを義務にしない - 自分のために書く - いきなり大きなテストを書かない - テストを書きすぎない(実装とのバランスを考える) - 実環境でのテストが不要になるわけではない
これを機に社内にテストコードを書くエンジニアが増えてきたら、カバレッジ分析、自動テストなどに取り組んでいきたいと思います。