テストでメールを送信せずに、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を取得する。

と、去年の7月に書いたメモがあったのでとりあえず公開。

追記: CakeEmail::transport()でdebugを指定すればいいじゃないかとも思ったけど、テスト対象の何らかの処理の中でtransportを変更していたらアレなのでやっぱりtransportClassをスタブ化するのが確実でよい。