我正在尝试在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()
}
}
答案 0 :(得分:0)
您要将数据添加到QUERY!
$request->query->add(['testId' => 1]);
除了... p之外,它仅以这种方式对我有效
$request->request->replace(['testId' => 1]);
但是最后一行用于其他重新请求,因此即使没有它也可以正常工作。