Laravel PHPUnit 返回 404

对于 Laravel API,我已经编写了测试用例。但每当我运行测试用例时,它总是失败并出现以下错误,


1) Tests\Feature\CompanyTest::orgTest

Expected status code 200 but received 404.

Failed asserting that 200 is identical to 404.

添加$this->withoutExceptionHandling();到测试用例代码后,它返回以下错误,


1) Tests\Feature\CompanyTest::orgTest

Symfony\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);

    }

我用谷歌搜索了该错误并尝试了很多解决方案但无法成功。任何人请让我知道问题是什么。


慕沐林林
浏览 156回答 4
4回答

牛魔王的故事

这是一个 404 错误,因此找不到您的网页:Symfony\Component\HttpKernel\Exception\NotFoundHttpException: POST domainname/index.php/api/company不好的方法,发布到“域名”/api/company或“域名/index.php/api/company”,但不包含“域名”!如果它不起作用,请检查该 api 路由的路由配置。你的控制器和动作声明得好吗?

胡子哥哥

在我看来,PHPUnit 不仅找不到这个 URL,而且找不到整个网站。您可以通过在测试中请求“/”来检查它。如果我是对的,首先,我建议检查APP_URL您的.env.testing. 通常,我将其设置为APP_URL=http://localhost,它对我有用。

紫衣仙女

默认情况下,laravel 的路由不会明确显示它是一个 php 文件,而是具有您在路由文件上决定的专用端点。所以index.php 不应该是laravel 的有效路由。404 错误状态代码是指未找到错误。无论您使用的是 web.php 还是 api.php,您尝试访问的 api url 可能与路由文件中的 api url 不匹配。php artisan route:list我建议在项目的基本路径上使用,以正确查看您想要的路线是否已注册并从那里进行匹配。

拉丁的传说

404 代码意味着在指定的路线上找不到任何内容。它可能是您指定的路线index.php/api/company。尝试路由到[host:port]/api/company
打开App,查看更多内容
随时随地看视频慕课网APP