たぶん私はこれを複雑にしすぎていますが、別のクラスによって呼び出されている 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'));
明らかにそれは機能せず、多くのエラーがスローされます。
これをテストする方法のアイデアはありますか?