Laravel 5.8项目PHPUnit测试返回404错误,寻求修复方案
解决Laravel 5.8 PHPUnit测试404响应问题
咱们先揪出核心问题:你的测试请求路径和实际注册的路由不匹配,这才导致了404错误。
1. 定位路径不匹配的问题
你定义的路由是:
Route::apiResource('Vehicle.source', 'API\VehicleController');
这个嵌套的apiResource生成的路由结构里,你实际能正常访问的API路径是/api/Vehicle/22222/source/DB,但你的测试代码里请求的却是:
$this->json('GET', '/api/Vehicle/22222/DB');
这里明显缺少了source这一段路径,PHPUnit找不到对应的路由,自然返回404。
2. 修复测试请求路径
把测试里的请求路径改成和实际访问一致的即可:
$response = $this->json('GET', '/api/Vehicle/22222/source/DB');
3. 额外:解决实际访问的500错误
路径改对后虽然不会再出现404,但你实际访问时返回500,说明VehicleController里的对应方法(比如处理该请求的自定义方法或show方法)存在逻辑问题,比如:
- 数据库中不存在ID为22222的Vehicle记录
- 处理
DB参数时触发了异常 - 缺少必要的依赖或配置
你可以查看Laravel的日志文件(storage/logs/laravel.log),里面会有500错误的具体堆栈信息,修复这个问题后,才能通过assertStatus(200)的断言。
4. 验证路由结构(可选)
如果对路由的实际结构存疑,你可以运行以下命令查看所有注册的路由:
php artisan route:list
在输出里找到和Vehicle.source相关的条目,确认请求方法、路径是否和你的测试匹配。
内容的提问来源于stack exchange,提问作者Lakshika Wijayasinghe
相关产品推荐
相关产品推荐

