我使用phpunit 4.8.23和laravel 5.2。PHPUnit不主张例外
我的控制器之一是抛出HttpException如下。
throw new HttpException(403, 'auth_failure');
和Handler.php
if ($e instanceof HttpException){
return response()->json(array(...), $e->getStatusCode());
}
为了测试这一点,我用在我的测试文件中的以下代码。
/**
* @expectedException Symfony\Component\HttpKernel\Exception\HttpException
* @expectedExceptionMessage auth_failure
*/
public function testMethod(){....}
public function testMethod(){
$this->json(.....);
$this->setExpectedException('HttpException');
}
3,甚至尝试捕捉
try {$this->json(....)}
catch(\Symfony\Component\HttpKernel\Exception\HttpException $e){..}
我试着用\Exception
也三号情况。
在任何情况下,我得到的输出
PHPUnit 4.8.23 by Sebastian Bergmann and contributors.
.Symfony\Component\HttpKernel\Exception\HttpException {#986
-statusCode: 403
-headers: []
#message: "auth_failure"
#code: 0
#file: "<path to file>"
#line: 103
-trace: {
57. App\Http\Controllers\DeviceController->register() ==> new Symfony\Component\HttpKernel\Exception\HttpException(): {.....
我已经throgh this,this和this问题,但未能取得任何进展。
编辑 我希望我已经提供了所有的相关信息。下面是完整的方法反正
/**
* @expectedException Symfony\Component\HttpKernel\Exception\HttpException
* @expectedExceptionMessage auth_failure
*/
public function testRegAuthFailure()
{
$this->json('POST',
'auth',
[
"lang" => "us_en",
"data" => [
"identity" => "00000004",
"password" => "wrong",
]
]
);
$this->setExpectedException('HttpException');
}
任何帮助表示赞赏:)
您能否发布您正在尝试运行的实际代码(即您的测试'testMethod'的完整代码)? –
这里是实际的代码 –
你是否试图直接在“testRegAuthFailure”内部抛出异常? – skz