CakePHP 2.x メール送信内容のテストを行う
テストでメールを送信せずに、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を取得する。 ...