zf2 AbstractHttpControllerTestCase问题

时间:2013-10-02 18:26:52

标签: zend-framework2

使用\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()方法,但我不确定这是否是我做得不好的事情。

非常感谢任何帮助!

1 个答案:

答案 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);
}