Я пытаюсь перехватить UnauthorizedException с помощью Codeception в своем функциональном тесте. Что ж, на самом деле мой функциональный тест — это тесты Laravel, запускаемые кодированием. Итак, я пробовал 2 способа:
/** @test
*
* @expectedException UnauthorizedException
*/
public function test_exception()
{
$this->visit("/associations/1/edit")
}
Or
/** @test
*
*/
public function test_exception()
{
\PHPUnit_Framework_TestCase::setExpectedException(UnauthorizedException::class);
$this->visit("/associations/1/edit")
}
В моем контроллере я просто запускаю его для проверки:
throw new UnauthorizedException();
В обоих случаях он просто говорит:
Failed asserting that exception of type "UnauthorizedException" is thrown.
Вроде все нормально, но не работает... Есть идеи, почему???
РЕДАКТИРОВАТЬ: мой метод редактирования в контроллере
public function edit($id)
{
$association = Association::findOrFail($id);
$federation = $association->federation;
if (Auth::user()->cannot('edit', $association)) { // I have checked with dd() my test goes here.
throw new UnauthorizedException();
}
$users = User::all();
$federations = Federation::all();
return view('associations.form', compact('association', 'users', 'federations', 'federation'));
}
\Illuminate\Contracts\Validation\UnauthorizedException
- person Angad Dubey   schedule 18.06.2016abort(403, 'Unauthorized action.');
- person Angad Dubey   schedule 18.06.2016throw new UnauthorizedException("not authorized");
- person Angad Dubey   schedule 18.06.2016