Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel PHPUnit returning 404

For laravel API I have write the test cases. But whenever I am running the test cases it always failed with below error,

1) Tests\Feature\CompanyTest::orgTest
Expected status code 200 but received 404.
Failed asserting that 200 is identical to 404.

After adding the $this->withoutExceptionHandling(); to testcase code it return the below error,

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

My Code in Test File is,

public function orgTest()
    {
        $requestData = ["organizationId" => 10,"offset"=>1,"limit"=>10,"notificationId"=>""];
        $response = $this->withoutExceptionHandling();
        $response->postJson('/index.php/api/company',$requestData);
        $response->assertStatus(200);
    }

I have googled the error and tried many solutions but unable to succeed. Anyone please let me know whats the issue.

like image 251
Narayan Avatar asked Aug 10 '20 13:08

Narayan


2 Answers

It is a 404 error, so your webpage is not found :

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

Bad way to go, post to /api/company or with /index.php/api/company but not with "domainname" !

If it is not working, check your route config for that api route. Are your controller and action declared well ?

like image 126
BendaThierry.com Avatar answered Oct 01 '22 22:10

BendaThierry.com


It seems to me that PHPUnit can't find not only this URL but the whole website. You could check it by request to "/" in your test.

If I'm right, first of all, I'll suggest checking the param APP_URL in your .env.testing. Usually, I set it as APP_URL=http://localhost, and it works for me.

like image 33
SeemsLegit Avatar answered Oct 01 '22 23:10

SeemsLegit