Envoi d'une requête POST avec PHPUnit
J'ai un site de symfony, et Im essayant de faire quelques tests unitaires. J'ai ce genre de test, où j'essaie de proposer quelque chose:
<?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());
}
mais je ne crois pas que les données Im envoi est en cours de réception dans le contrôleur:
class HomeController extends Controller
{
public function indexAction()
{
var_dump($_POST);
die;
return $this->render('AcmeBundle:Home:index.html.twig');
}
}
la var_dump
est en fait le retour de moi un tableau vide.
Ce qui me manque pour envoyer des informations par le biais de mon POST?
OriginalL'auteur Enrique Moreno Tent | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
$_POST
est une variable rempli par PHP et symfony demande n'est créé à partir de ce globals si elle est appelée directement sur http. Le symfony robots ne pas faire une vraie demande, il crée une requête à partir des paramètres fournis dans votre$client->request
et l'exécute. Vous avez besoin d'accéder à ce genre de choses via leDemande
objet. N'utilisez jamais de$_POST
,$_GET
, etc. directement à.utilisation
$request->request->all()
pour obtenir tous les paramètres dans un tableau. Pour obtenir uniquement un paramètre spécifique, vous pouvez utiliser$request->request->get('my_param')
. Si jamais vous avez besoin pour accéder aux paramètres, vous pouvez utiliser$request->query->get('my_param')
, mais mieux définir les paramètres de la requête déjà dans le modèle de routage.OriginalL'auteur Emii Khaos
Je pense que vous essayez de faire ceci:
Vous mettez vos données (contenu) dans le tableau params mais vous voulez le mettre dans le raw contenu du corps qui est une chaîne encodée JSON.
OriginalL'auteur Mike Rudling