如何在CakePHP 1.2中将查询字符串传递给testAction?

Rya*_*her 5 php unit-testing cakephp cakephp-1.2

在CakePHP中,在URL中放置查询字符串不会导致它被自动解析和拆分,就像通常在直接调用控制器时一样.

例如:

$this->testAction('/testing/post?company=utCompany', array('return' => 'vars')) ;
Run Code Online (Sandbox Code Playgroud)

将导致:

[url] => /testing/post?company=utCompany
Run Code Online (Sandbox Code Playgroud)

通过Web浏览器直接调用url会导致:

[url] => Array
    (
        [url] => testing/post
        [company] => utCompany
    )
Run Code Online (Sandbox Code Playgroud)

在不编辑CakePHP源的情况下,有没有办法在运行单元测试时拆分查询字符串?

Rya*_*her 3

我有一个 hack(即可能不适用于未来的 CakePHP 版本)或一个未记录的功能。

如果第二个 testAction 参数包含名为“url”的命名数组,则这些值将放置在控制器中的 $this->params 对象中。这为我们提供了与直接调用控制器时相同的最终结果。

$data = array ('company' => 'utCompany') ;

$result = $this->testAction('/testing/post', array
(
    'return' => 'vars', 
    'method' => 'get', 
    'url' => $data)
) ; 
Run Code Online (Sandbox Code Playgroud)

对于我需要做的事情,我对这种方法感到满意。我将很快向社区开放这个问题,以便将来可以提供更好的答案。