简体   繁体   中英

$request->all() in laravel returns empty when called from phpunit

I am trying to write phpunit test cases in Laravel, the problem is the functionality works perfectly fine but when I try to access via phpunit the $request->all() always returns empty.

$request->request->add(['testId' => 1]);

This is called using

 $request->all();

This when called in the Laravel application works as expected and gives the data. But when called via terminal using phpunit it always returns empty array. But it returns the data if called as

$request->request->all();

Please let me know how can this be solved. Laravel verison used is Laravel Framework 5.6.24

I am manually creating a request in Phpunit test file as:

use Illuminate\Http\Request as Request;

$request = new Request();

Test Class:

use Tests\TestCase;

use App\Http\Middleware\Authenticate;

class BasicTest extends TestCase
{
   public function testMyfunc()
   {
       $request = new Request();
       $request->setMethod('GET');
       $request->headers->set('key','value');
       $request->request->add(['testId' => 1]);

       print_r($request->all()); //This is returning empty array always
       print_r($request->request->all()); //This returns correct data
       //But I need to get the GET params when I call $request->all()
   }
}

You are to add the data to QUERY!

$request->query->add(['testId' => 1]);

It worked for me this way only ... in addition to

$request->request->replace(['testId' => 1]);

But the last line served for other re-requests, so probably, it to work even without it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM