コントローラーの1つに、依存性注入を使用して電子メールとSMSを送信する次のコードがあります。これは正常に動作します
$message = new \Application\SendMessage\Message();
$message->toName = $toName;
$message->toEmail = $toEmail;
$message->fromEmail = $fromemail;
$message->emailBodyText = $emailBodyText;
$message->smsMessage = $emailBodyText;
$message->toMobile = $toMobile;
$seSMS = new \Application\SendMessage\SendSMS($message);
$suSMS = new \Application\SendMessage\SendMessage($seSMS);
$statusMsg = $suSMS->releaseMsg();
$seEmail = new \Application\SendMessage\SendEmail($message);
$suEmail = new \Application\SendMessage\SendMessage($seEmail);
$statusMsgEmail = $suEmail->releaseMsg();
そして、次のコードを使用してテストしています
public function testcreateActionCanBeAccessed()
{
$postData = array(
// variables here
);
$this->dispatch('/mycontroller/myaction', 'POST', $postData);
$this->assertResponseStatusCode(200);
}
これは問題なく動作し、100% のコード カバレッジが得られます。唯一の問題は、単体テストを実行するたびに、電子メールが送信され、SMS テキスト メッセージもリリースされることです。メール送信とテキスト メッセージング機能もテストするので、これは良いこともあります。
しかし、何度も何度もテストを実行しなければならない場合は、ちょっと面倒です。上記のコードをモックして、100% のコード カバレッジが得られるようにするにはどうすればよいでしょうか。ただし、SMS テキストや電子メールは送信されません。