0

たぶん私はこれを複雑にしすぎていますが、別のクラスによって呼び出されている Email オブジェクトがあり、Email クラスは Swift Mailer のインスタンスを使用しています。

$email = Email::instance();
$mailer = $this->getMock('Swift_Mailer', array('send'), array(new \Swift_NullTransport()));
$email->setTransport($mailer);
$mailer->expects($this->once())
    ->method('send');
$model->sendEmail('user_email@test.com');

上記のように、send メソッドが呼び出されたかどうかを簡単にテストし、電子メールが送信されていることを正しく確認できますが、メーラーで送信されている Swift Mailer Message から件名をテストする必要があります。

$email = Email::instance();
$mailer = $this->getMock('Swift_Mailer', array('send'), array(new \Swift_NullTransport()));
$email->setTransport($mailer);
$mailer->expects($this->once())
    ->method('send')
    ->with($this->equalTo('new email subject'));

明らかにそれは機能せず、多くのエラーがスローされます。

これをテストする方法のアイデアはありますか?

4

1 に答える 1

0

回避策を見つけました。

Swift Mail のコンテンツをテストする代わりに、モデルをモックして、Email オブジェクト クラスを呼び出す関数に渡されるパラメータをテストしています。

確かにきれいではありませんが、上記の特定の問題を解決します。

于 2012-10-24T21:49:59.693 に答える