【问题标题】:$request->all() in laravel returns empty when called from phpunit当从 phpunit 调用时,laravel 中的 $request->all() 返回空
【发布时间】:2018-11-17 00:33:20
【问题描述】:

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

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

这被称为使用

 $request->all();

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

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

请告诉我如何解决这个问题。使用的 Laravel 版本是 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()
   }
}

【问题讨论】:

  • 你能分享你的测试课吗?
  • @AnarBayramov 我已经更新了我的问题
  • 我在应用程序内部有同样的行为(不是 PHPUnit)。创建了新的请求,通过add添加了参数(实际上我什么都试过了!!!).... request->All() 是空的!

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


【解决方案1】:

您要将数据添加到QUERY!

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

它只对我有用……除了

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

但最后一行服务于其他重新请求,所以即使没有它,它也可能工作。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 2020-05-23
    • 2019-01-31
    • 2016-12-24
    • 2020-06-06
    • 2016-07-05
    • 2015-10-28
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多