使用Silex测试框架发送post参数

时间:2013-03-06 09:30:56

标签: testing symfony phpunit silex

当我尝试在表单提交上进行功能测试时,我遇到了这个问题:

testSearch.php:

public function testFormSubmission()
{
   $client = $this->createClient();
   $client->request('POST', '/search', array('nome' => 'Jan'));
   ...
}

app.php:

$app->post('/search', function (Request $request)  use ($app)
{
    $post_data = $request->get('form');
    ...
});

...但$ post_data为NULL。

如果我使用浏览器中的提交按钮进行提交,一切正常......

2 个答案:

答案 0 :(得分:3)

您正在呼叫$request->get('form'),但未将form参数设置为任何内容。也许这就是你要找的东西:

$client->request('POST', '/search', array('form' => array('nome' => 'Jan')));

如果没有,您需要提供更多背景信息。

答案 1 :(得分:1)

 $client->request('POST', '/search', array('nome' => 'Jan'));

请求方法的第三个参数似乎是请求参数(?& nome = Jan)

您应该使用抓取工具来模拟表单提交:

来自doc:

$form = $crawler->selectButton('submit')->form();

// set some values
$form['name'] = 'Lucas';
$form['form_name[subject]'] = 'Hey there!';

// submit the form
$crawler = $client->submit($form);

http://symfony.com/doc/current/book/testing.html

或使用第六个参数发送原始请求正文。