当从phpunit调用时,laravel中的$ request-> all()返回空

时间:2018-06-07 07:32:41

标签: php laravel-5 request phpunit laravel-5.6

我正在尝试在Laravel中编写phpunit测试用例,问题是功能完美无缺,但当我尝试通过phpunit访问$ request-> all()时总是返回空。

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

使用

调用此方法
 $request->all();

这在Laravel应用程序中调用时按预期工作并提供数据。但是当使用phpunit通过终端调用时,它总是返回空数组。但如果调用

,它将返回数据
$request->request->all();

请让我知道如何解决这个问题。 Laravel verison使用的是Laravel Framework 5.6.24

我在Phpunit测试文件中手动创建一个请求:

use Illuminate\Http\Request as Request;

$request = new Request();

测试类:

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()
   }
}

1 个答案:

答案 0 :(得分:0)

您要将数据添加到QUERY!

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

除了... p之外,它仅以这种方式对我有效

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

但是最后一行用于其他重新请求,因此即使没有它也可以正常工作。