欠落している場合に(空の件名)setSubject
に件名を設定する方法をテストしています。宣言されていないプロパティにアクセスしようとすると、Zend_Mail は例外をスローします (たとえば、メールの件名が欠落している場合、いくつかの例外をスローしたほうがよいでしょう)。詳細: http://framework.zend.com/issues/browse/ZF-11371
これは、正常にテストできるようにするために使用する必要があるものです。
クラス
protected function setSubject()
{
# catch exception thrown if non existing $this->message object property is accessed
try
{
$this->subject = $this->defunctTheContent($this->message->getHeaders(), $this->message->subject);
}
catch (Zend_Mail_Exception $e)
{
}
if( ! $this->subject)
$this->subject = '(empty subject)';
}
テスト
public function testNoSubject()
{
$email = new parseEmail(file_get_contents('mail.x'));
$this->AssertEquals('(empty subject)', $email->subject);
}
ただし、このコードを試してみると、catch ブロックが空であることがわかります...
protected function setSubject()
{
try
{
$this->subject = $this->defunctTheContent($this->message->getHeaders(), $this->message->subject);
}
catch (Zend_Mail_Exception $e)
{
$this->subject = '(empty subject)';
}
}
テストは次のメッセージで失敗します:
1 件のエラーがありました:
1) Email_ParseTest::testNoSubject InvalidArgumentException: 件名が必要です
$this->subject が設定されていない (または同様の) と文句を言います。
いくつかの詳細情報:
- PHP5.4.8
- Zend フレームワーク 1.9.5
- PHPユニット 3.6.12
subject
""
空文字列 ( )として定義されます
2番目の方法を「手動で」テストしましたが、期待どおりに機能しています(件名はcatchブロック内に設定されています)。私はPHPUnitの経験があまりないので、これはE_PEBKAC
簡単かもしれません。