为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel PHPUnit 返回 404

Laravel PHPUnit 返回 404

PHP
慕沐林林 2023-09-22 16:03:59
对于 Laravel API,我已经编写了测试用例。但每当我运行测试用例时,它总是失败并出现以下错误,1) Tests\Feature\CompanyTest::orgTestExpected status code 200 but received 404.Failed asserting that 200 is identical to 404.添加$this->withoutExceptionHandling();到测试用例代码后,它返回以下错误,1) Tests\Feature\CompanyTest::orgTestSymfony\Component\HttpKernel\Exception\NotFoundHttpException: POST domainname/index.php/api/company/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php:126/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:415/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:113/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:507/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:473/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:332/tests/Feature/CompanyTest.php:21我在测试文件中的代码是,public function orgTest()    {        $requestData = ["organizationId" => 10,"offset"=>1,"limit"=>10,"notificationId"=>""];        $response = $this->withoutExceptionHandling();        $response->postJson('/index.php/api/company',$requestData);        $response->assertStatus(200);    }我用谷歌搜索了该错误并尝试了很多解决方案但无法成功。任何人请让我知道问题是什么。
查看完整描述

4 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这是一个 404 错误,因此找不到您的网页:

Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST domainname/index.php/api/company

不好的方法,发布到“域名”/api/company或“域名/index.php/api/company”,但不包含“域名”!

如果它不起作用,请检查该 api 路由的路由配置。你的控制器和动作声明得好吗?


查看完整回答
反对 回复 2023-09-22
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

在我看来,PHPUnit 不仅找不到这个 URL,而且找不到整个网站。您可以通过在测试中请求“/”来检查它。

如果我是对的,首先,我建议检查APP_URL您的.env.testing. 通常,我将其设置为APP_URL=http://localhost,它对我有用。


查看完整回答
反对 回复 2023-09-22
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

默认情况下,laravel 的路由不会明确显示它是一个 php 文件,而是具有您在路由文件上决定的专用端点。所以index.php 不应该是laravel 的有效路由。

404 错误状态代码是指未找到错误。无论您使用的是 web.php 还是 api.php,您尝试访问的 api url 可能与路由文件中的 api url 不匹配。

php artisan route:list我建议在项目的基本路径上使用,以正确查看您想要的路线是否已注册并从那里进行匹配。


查看完整回答
反对 回复 2023-09-22
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

404 代码意味着在指定的路线上找不到任何内容。它可能是您指定的路线index.php/api/company。尝试路由到[host:port]/api/company



查看完整回答
反对 回复 2023-09-22
  • 4 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信