使用PHPUnit发送POST请求
我有一个symfony网站,我正在尝试做一些单元测试。我有这样的测试,我试图提交一些东西:使用PHPUnit发送POST请求,php,symfony,post,tdd,phpunit,Php,Symfony,Post,Tdd,Phpunit,我有一个symfony网站,我正在尝试做一些单元测试。我有这样的测试,我试图提交一些东西: <?php namespace Acme\AcmeBundle\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class HomeControllerTest extends WebTestCase { public function testrandomeThings() {
<?php
namespace Acme\AcmeBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class HomeControllerTest extends WebTestCase {
public function testrandomeThings() {
$client = static::createClient();
$crawler = $client->request(
'POST',
'/',
array(
"shopNumber" => 0099,
"cardNumber" => 231,
"cardPIN" => "adasd"),
array(),
array());
}
var\u dump
实际上返回了一个空数组
通过POST请求发送信息缺少什么?
$\u POST
是一个由PHP填充的变量,只有在通过http直接调用时,才从这个全局变量创建symfony请求。symfony爬虫程序不会发出真正的请求,它会根据$client->request
中提供的参数创建一个请求并执行它。您需要通过对象访问这些内容。切勿直接使用$\u POST
,$\u GET
等
use Symfony\Component\HttpFoundation\Request;
class HomeController extends CoralBaseController
{
public function indexAction(Request $request)
{
var_dump($request->request->all());
die;
return $this->render('CoralWalletBundle:Home:index.html.twig');
}
}
使用
$request->request->all()
获取数组中的所有POST参数。要仅获取特定参数,可以使用$request->request->get('my_param')
。如果您需要访问获取参数,可以使用$request->query->GET('my_param')
,但最好在路由模式中设置查询参数。我想您正在尝试这样做:
$client = static::createClient();
$client->request($method, $url, [], [], [], json_encode($content));
$this->assertEquals(
200,
$client->getResponse()
->getStatusCode()
);
您将数据(内容)作为params数组放入,但希望将其作为原始正文内容放入,原始正文内容是一个JSON编码的字符串
$client = static::createClient();
$client->request($method, $url, [], [], [], json_encode($content));
$this->assertEquals(
200,
$client->getResponse()
->getStatusCode()
);