我正在测试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 未设置(或类似)。
更多信息:
- PHP 5.4.8
- Zend 框架 1.9.5
- PHPUnit 3.6.12
subject
被定义为空字符串 (""
)
我已经“手动”测试了第二种方法,它按预期工作(主题设置在 catch 块中)。我对 PHPUnit 没有太多经验,所以这可能很E_PEBKAC
容易。