Php 对预期异常执行任意断言的更好解决方案?
当抛出的异常处理消息或代码以外的其他信息时,对其执行任意断言非常有用 是否有比以下示例更简单、可读性更强或更“phpunit推荐方式”的方法:Php 对预期异常执行任意断言的更好解决方案?,php,unit-testing,exception,phpunit,Php,Unit Testing,Exception,Phpunit,当抛出的异常处理消息或代码以外的其他信息时,对其执行任意断言非常有用 是否有比以下示例更简单、可读性更强或更“phpunit推荐方式”的方法: public function testTitleShouldNotAcceptArrayAsValue() { /* Arrange */ $schema = new sch\ObjectSchema(); /* Expect */ $this->expectException(sch\Exception::c
public function testTitleShouldNotAcceptArrayAsValue()
{
/* Arrange */
$schema = new sch\ObjectSchema();
/* Expect */
$this->expectException(sch\Exception::class);
try {
/* Act */
$schema->title = [];
} catch (sch\Exception $exception) {
/* Assert */
$this->assertEquals('title', $exception->getProperty());
$this->assertEquals(
[
'properties' => [
'title' => [
'type' => 'string'
]
]
],
$exception->getRules()
);
throw $exception;
}
}
如果您正在将附加信息放入异常对象中,并且希望在测试中证明它正在被设置,那么我将像您一样使用try/catch 在我看来,
expectException()
和重新抛出是多余的。在catch结束时,我将带着pass返回函数,在catch块失败后(使用$this->fail('sch\Exception not should');
),因为没有按照计划捕获异常
很明显,它确实在起作用,而且在大多数情况下,清晰度比优雅更有用。如果您正在向异常对象添加附加信息,并且希望在测试中证明它正在被设置,那么我会像您一样使用try/catch
在我看来,expectException()
和重新抛出是多余的。在catch结束时,我将带着pass返回函数,在catch块失败后(使用$this->fail('sch\Exception not should');
),因为没有按照计划捕获异常
这将是完全明显的,这是做-和清晰度是更有用的,很多时候,比优雅