▼ [PHP] PHP の ::class を使うとテストコードがスッキリするよね、という話 会社でコードレビューをして貰っているときに ClassName::class という表記のコメントを貰った。え?「::class」ってなに?と思って調べてみると、PHP 5.5 からこの記法が追加されていた。 PHPマニュアル - クラスの基礎 ::class PHP 5.5 以降では、class キーワードでクラス名の解決ができるようになりました。 ClassName クラスの完全修飾名を文字列で取得するには、 ClassName::class とします。 これは、 名前空間つきのクラスと組み合わせると特に便利です。 これを知ってなるほど!!!と思って、さっそく使い始めた。 例えば、Phake でモックを作るときに、今まではこんな風に書いていた。 これを ::class で書き換えると、こうなる
継続的インテグレーションするならテストは必須ですよね。 ただテストしにくい仕様もたまにあります。 ランダム性があるテストは、書きにくいものです。 今回は、ランダム性あるルーレットクラスを作ってランダム性をカバレッジしたテストをPHPで書きます。 ##### 環境構成 * PHP 5.4 * PHPUnit 4.2 * Phake (モッキングフレームワーク) <br> ##### ルーレットの仕様 #### ルーレット(Rouletteクラス)の仕様 * ルーレットは、1~5等賞を与えること * 等賞は、ランダムな確率にすること #### 確率の定義 * 1等 0.1% * 2等 3% * 3等 10% * 4等 30% * 5等 56.9% 以下、サンプルソースになります。 <pre class="brush: php"> /** * ルーレットクラス */ class Roulette
なぜPHPUnitを使わないか PHPでテストといえば、おなじみPHPUnit。モック・スタブも実装されており、PHPUnitさえ使っていれば困ることもなく…。 いえ、私は困りました。PHPUnitのモック、すこし記述が冗長になるのが欠点。CakePHPといったフレームワークを横断的にテストする際、テストコードが整然と並ばず複雑な入れ子になったとき、これはまずいと直感し他の技術を探し求めたのです。 そこで知ったのがPhakeフレームワーク。Javaのモック・フレームワーク"Mockito"が由来だそうです。 https://github.com/mlively/Phake すでにPhakeに関する記事はいくつか書いていますが、今一度まとめておきます。 CakePHPにPhakeを導入するノウハウ CakePHPはテストクラスがPHPUnitに依存しているため、他のフレームワークの介入には工
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く