为什么 PHPUnit 不能正确断言使用无效方法的请求?
Why PHPUnit does not assert correctly a request with an unvalid method?
我想做的是使用无效方法断言请求。
我测试的是一个来宾试图以 GET(无效)注销。
这是代码:
/**
* Enables router filters.
*
* @return void
*/
public function enableRouterFilters()
{
$this->app['router']->enableFilters();
}
[...]
/**
* Tests users/logout route as a Guest with GET.
*
* @return void
*/
public function testRouteToUsersLogoutAsGuestWithGetMethod()
{
$this->enableRouterFilters();
$response = $this->call('GET', '/users/logout');
$this->assertResponseStatus(405);
}
[...]
PHPUnit 没有断言 true,而是抱怨它:
[...]
There was 1 error:
1) RoutesTest::testRouteToUsersLogoutAsGuestWithGetMethod
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:
[...]
FAILURES!
Tests: 7, Assertions: 11, Errors: 1.
如果断言确实为真,为什么会给我一个错误?
抛出的异常是 "MethodNotAllowedHttpException"。这意味着您没有设置路由来捕获对此特定 URL 和请求类型 (GET) 的请求。
您实际上要做的是告诉 PHPUnit 您希望抛出某个异常,在这种情况下:Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
尝试用以下方法注释您的方法:
/**
* @expectsException Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
**/
我想做的是使用无效方法断言请求。
我测试的是一个来宾试图以 GET(无效)注销。
这是代码:
/**
* Enables router filters.
*
* @return void
*/
public function enableRouterFilters()
{
$this->app['router']->enableFilters();
}
[...]
/**
* Tests users/logout route as a Guest with GET.
*
* @return void
*/
public function testRouteToUsersLogoutAsGuestWithGetMethod()
{
$this->enableRouterFilters();
$response = $this->call('GET', '/users/logout');
$this->assertResponseStatus(405);
}
[...]
PHPUnit 没有断言 true,而是抱怨它:
[...]
There was 1 error:
1) RoutesTest::testRouteToUsersLogoutAsGuestWithGetMethod
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:
[...]
FAILURES!
Tests: 7, Assertions: 11, Errors: 1.
如果断言确实为真,为什么会给我一个错误?
抛出的异常是 "MethodNotAllowedHttpException"。这意味着您没有设置路由来捕获对此特定 URL 和请求类型 (GET) 的请求。
您实际上要做的是告诉 PHPUnit 您希望抛出某个异常,在这种情况下:Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
尝试用以下方法注释您的方法:
/**
* @expectsException Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
**/