PHPUnitで名前空間付きのモッククラスを作る
TL;DR: class_alias を使う。 PHPUnit 5.7 \Awesome\GeartInterface というインターフェースから \Awesome\MockClass という名前でモッククラスを作成したい。 setMockClassNameで\Awesome\MockClassを指定すると名前空間付のクラスは作成できないと怒られる。 ...
TL;DR: class_alias を使う。 PHPUnit 5.7 \Awesome\GeartInterface というインターフェースから \Awesome\MockClass という名前でモッククラスを作成したい。 setMockClassNameで\Awesome\MockClassを指定すると名前空間付のクラスは作成できないと怒られる。 ...
テストでメールを送信せずに、CakeEmailでのレンダリング内容を取りたい場合は、 // モックを作成 $CakeEmail = $this->getMock('CakeEmail', array('transportClass')); $CakeEmail->expects($this->any())->method('transportClass') ->will($this->returnValue(new DebugTransport())); // CakeEmailのMockをセット $TestTarget->CakeEmail = $CakeEmail; // ... $TestTargetを使った何らかのメール送信を含む処理 // text形式のメッセージを取得 $bodyText = $CakeEmail->message(CakeEmail::MESSAGE_TEXT); // html形式のメッセージを取得 $bodyHtml = $CakeEmail->message(CakeEmail::MESSAGE_HTML); // ... 適宜、値チェック てな感じで、CakeEmail::transportClass()をスタブ化してDebugTransportを返すようにする。で、CakeEmail::message()でbodyを取得する。 ...