我在控制器中有这样的index
方法
public function index()
{
$this->authorize('index', Contact::class);
....
}
和index
中的ContactPolicy
方法>
public function index() { return Auth::user()->can('view_Contact'); }
和类似的测试方法
/** @test */ public function a_user_without_permission_can_not_see_contacts() { $this->login(['no_permission']); $this->get('/contacts') ->assertStatus(403); }
当我运行测试时,向我显示此错误
:当我将控制器更改为此时,它可以正常工作,并向我显示绿色1)测试\功能\帐户测试:: a_user_without_permission_can_not_see_contactsIlluminate \ Auth \ Access \ AuthorizationException:此操作未经授权。
Note1
:在测试类的登录方法中,我发送用户权限参数,并且它可以正常工作。public function index() { if(Auth::user()->can('view_Contact')){ ........ }else return response()->view('403',['msg' => 'you_not_have_not_permission'])->setStatusCode(403) ;
Note2
我在控制器中有这样的索引方法,例如:public function index(){$ this-> authorize('index',Contact :: class); ....}和ContactPolicy中的索引方法public function index(){...
authorize
方法如果未授权用户将引发异常。您需要使用@expectesException
或类似方法来向您的测试发出信号以期望发生异常。