【发布时间】:2013-05-16 20:21:30
【问题描述】:
当我像这样格式化错误消息时,如何测试异常是否引发预期的错误消息:
throw new \Exception(sprintf('Random string: "%s".', 'blablabla'));
显然用 $this->assertEquals() 进行测试是行不通的,因为我不知道 %s 会是什么。是否有直接的方法来测试使用 sprintf 的异常消息?
【问题讨论】:
-
你为什么不知道
'%s'的值是什么?我认为这是测试的目的之一,以受控方式触发代码的某些部分?为什么你不能让你的代码以你希望它引发的方式引发一个特定的异常,然后你可以断言消息等于你的预期? -
@dm03514:这是漫长的一天......显然这是正确的方法。如果您将其作为一个答案发布,我会将其作为答案。
-
为什么不将异常扩展为
RandomStringException? :) -
@OneTrickPony:我以“随机字符串”为例。正如 dm03514 已经提到的,我实际上应该知道每个单独的测试 %s 将是什么。还是)感谢你的建议!它可能会帮助其他人。