0

\Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase我在使用该类进行控制器测试时遇到了一个问题。
方法上的第三个参数AbstractHttpControllerTestCase::dispatch()似乎不接受多维数组。

例如

$this->dispatch('/controller/action', 'PUT', array('field1' => 'value1', 
                                                   'field2' => array(2,4)). 

上面的方法调用会抛出异常,因为该$this->url()方法在使用时不接受数组值'PUT''POST'没关系,因为它没有使用setContent().

我需要使用数组值,因为表单中有复选框,并且我想测试提交多个值的情况。

我想知道是否有人遇到过同样的问题并设法找到解决方法。我可以覆盖该$this->url()方法,但我不太确定这是否是我做的不对。

任何帮助将不胜感激!

4

1 回答 1

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);
}
于 2013-10-03T10:15:53.233 回答