@expectedExceptionMessage

@expectedExceptionMessage 标注的运作方式类似于 @expectedExceptionCode ,用它可以对异常的错误讯息作出断言。

  1. class MyTest extends PHPUnit_Framework_TestCase
  2. {
  3. /**
  4. * @expectedException MyException
  5. * @expectedExceptionMessage Some Message
  6. */
  7. public function testExceptionHasRightMessage()
  8. {
  9. throw new MyException('Some Message', 20);
  10. }
  11. }

预期讯息可以是异常讯息的子串。在只需要断言传入的特定名称或参数确实出现于异常中时这个特性很有用,这样就无需在测试中关注完整的异常讯息。

  1. class MyTest extends PHPUnit_Framework_TestCase
  2. {
  3. /**
  4. * @expectedException MyException
  5. * @expectedExceptionMessage broken
  6. */
  7. public function testExceptionHasRightMessage()
  8. {
  9. $param = "broken";
  10. throw new MyException('Invalid parameter "'.$param.'".', 20);
  11. }
  12. }

为了方便测试同时减少冗余,可以用"@expectedExceptionMessage ClassName::CONST"这样的语法将指定类常量作为 @expectedExceptionMessage。在“@expectedExceptionCode”一节中可以看到范例。