Laravel未认证用户接口测试assertRedirect抛出AuthenticationException问题
问题原因
你在测试代码中调用了$this->withoutExceptionHandling(),这行代码会关闭Laravel的全局异常处理机制。
正常访问受auth中间件保护的路由时,Laravel的异常处理器会捕获Illuminate\Auth\AuthenticationException异常,对web路由自动返回重定向到登录页的响应;但禁用异常处理后,异常会直接向上抛出,不会触发重定向逻辑,因此测试直接报错。
解决方法
删除测试代码中的$this->withoutExceptionHandling();这行,重新执行测试即可得到预期的重定向结果。
额外注意
你当前执行测试的命令中,过滤的方法名是test_connected_user_can_create_new_task,和你编写的未登录测试的方法名test_not_connected_user_can_not_create_new_task不一致,如果要单独执行这个测试用例,需要修正命令里的过滤参数:
vendor/bin/phpunit --filter test_not_connected_user_can_not_create_new_task
内容的提问来源于stack exchange,提问作者abdello
相关产品推荐
相关产品推荐

