如果尝试访问未声明的属性,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)'; } }
测试失败并显示消息:
There was 1 error:
1) Email_ParseTest::testNoSubject
InvalidArgumentException: subject is required
它抱怨$this->主题未设置(或类似).
更多信息:
> PHP 5.4.8
> Zend Framework 1.9.5
> PHPUnit 3.6.12
> subject被定义为空字符串(“”)
我已经“手动”测试了第二种方法,它按预期工作(主题在catch块中设置).我对PHPUnit没有多少经验,所以这可能很容易就是E_PEBKAC.