6

对于 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);
    }

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

4

4 回答 4

2

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

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

糟糕的方式,发布到/api/company或使用/index.php/api/company但不使用“域名”!

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

于 2020-08-10T13:15:43.627 回答
1

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

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

于 2020-08-19T09:11:27.320 回答
0

404 代码表示在指定路线上找不到任何东西。它可能是您指定的路线index.php/api/company。尝试路由到[host:port]/api/company

于 2020-08-10T13:39:26.357 回答
0

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

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

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

于 2020-08-16T11:06:13.133 回答