1

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

测试搜索.php:

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

应用程序.php:

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

...但 $post_data 为 NULL。

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

4

2 回答 2

3

您正在调用$request->get('form'),但您没有将form参数设置为任何值。也许这就是您正在寻找的:

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

如果没有,您需要提供更多上下文。

于 2013-03-06T14:22:03.693 回答
1
 $client->request('POST', '/search', array('nome' => 'Jan'));

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

您应该使用爬虫来模拟表单提交:

来自文档:

$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

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

于 2013-03-06T09:48:23.290 回答