【发布时间】:2015-01-31 06:03:36
【问题描述】:
我有一个包含两个字段的表单。提交后,会重定向到显示该表单的同一控制器。
方法如下:
public function chartsAction($path, Request $request)
{
// display form
if(isset($_POST))
{
// handle form submission
}
}
当不是 POST 请求时,URL 为charts/。
当它是一个 POST 请求时,URL 是例如 charts/dateFrom/2013-08/dateTo/2014-02,所以这是方法的 $path 参数,以及取决于表单的两个变量。
现在我想测试一下。问题是表单重定向给了我相同的图表/网站。它只是不向路由添加 $path 参数。这是怎么回事?我的测试方法:
public function testChartsAction()
{
$crawler = $this->client->request('GET', '/charts', [], [], $this->credintials);
$form = $crawler->selectButton('dateChooser[Choose]')->form([
'dateChooser[dateFrom]' => '2014-08',
'dateChooser[dateTo]' => '2014-12',
]);
$this->client->submit($form);
$crawler = $this->client->followRedirect();
$this->assertTrue($this->client->getResponse()->isRedirect('/charts/dateFrom/2014-08/dateTo/2014-12'));
$this->assertTrue($this->client->getResponse()->isSuccessful());
}
第一个断言给了我错误。
【问题讨论】:
-
在 followRedirect 方法之前尝试测试 isRedirect
-
它仍然给我 /charts 重定向,没有来自表单的 GET 参数。
标签: php forms unit-testing symfony