使用\Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase
类进行控制器测试时遇到了一个问题。
似乎AbstractHttpControllerTestCase::dispatch()
方法的第三个参数不接受多维数组。
E.g。
$this->dispatch('/controller/action', 'PUT', array('field1' => 'value1',
'field2' => array(2,4)).
上面的方法调用将引发异常,因为$this->url()
方法在使用'PUT'
时不接受数组值。 'POST'
可以,因为它没有使用setContent()
。
我需要使用数组值,因为表单中有复选框,我想在提交多个值时测试案例。
我想知道是否有人遇到同样的问题并设法找到解决方法。我可以覆盖$this->url()
方法,但我不确定这是否是我做得不好的事情。
非常感谢任何帮助!
答案 0 :(得分:0)
与此同时,我不得不重写$ this-> url()方法来处理数组值。
这是我必须改变的,
elseif ($method == HttpRequest::METHOD_PUT) {
array_walk($params, function(&$item, $key)
{
if (is_array($item)) {
$oldItem = $item;
$item = '';
foreach ($oldItem as $value) {
$item = ($item ? $item . "&" : $item);
$item .= $key . '[]=' . $value;
}
} else {
$item = $key . '=' . $item;
}
}
);
$content = implode('&', $params);
$request->setContent($content);
}