我想测试一组路由,看看它们是否全部抛出
AuthenticationException
$routes = [
'bla/bla/bloe',
'bla/bla/blie',
etc..
];
public function test_not_alowed_exception(){
foreach ($routes as $route){
$this->assertTrowsAuthenticationError($route);
}
}
public function assertTrowsAuthenticationError($url): void {
// Tell PHPunit we are expecting an authentication error.
$this->expectException(AuthenticationException::class);
// Call the Url while being unauthenticated to cause the error.
$this->get($url)->json();
}
我的代码在第一次迭代中运行良好,但是由于异常,测试在第一次迭代后停止运行。
问题:
由于php设计的第一个异常会停止脚本,因此如何遍历一组URL来测试它们的AuthenticationException?
答案 0 :(得分:3)
异常将以异常结束代码执行的相同方式结束测试。每个测试只能捕获一个异常。
通常,当您需要使用不同的输入多次执行相同的测试时,应使用数据提供程序。
这是您可以做的:
public function provider() {
return [
[ 'bla/bla/bloe' ],
[ 'bla/bla/blie' ],
etc..
];
}
/**
* @dataProvider provider
*/
public function test_not_alowed_exception($route){
$this->assertTrowsAuthenticationError($route);
}
public function assertTrowsAuthenticationError($url): void {
// Tell PHPunit we are expecting an authentication error.
$this->expectException(AuthenticationException::class);
// Call the Url while being unauthenticated to cause the error.
$this->get($url)->json();
}