2017-08-10 44 views
0

在处理其他信息而不是消息或代码时,对抛出的异常执行任意断言可能很有用。更好的解决方案对预期异常执行任意断言?

有没有更简单,可读,或更“PHPUnit的推荐方式”来做到这一点,比下面的例子:

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; 
    } 
} 

回答

2

如果你是把更多的信息到异常对象,并想要在测试中证明它正在设置,那么我会使用try/catch。

IMO,expectException()throw虽然是多余的。在捕获结束时,我将通过合格返回函数,并且在catch块失败后(使用$this->fail('sch\Exception was not thrown');),因为没有发生例外情况,按照计划。

它会完全显而易见,它在做 - 而且清晰度在很大程度上比优雅更有用。

相关问题