我开始使用CakePHP框架和SimpleTest编写单元测试。当您的控制器将浏览器重定向到另一个页面时,该文档会描述a problem with the testAction method。 <{3}}有一个充满希望的音符,但链接已断开。
有人有这个工作吗?知道如何找到断开的链接指向的位置吗?
我发现了使用link to a possible fix覆盖重定向调用的讨论,但这似乎不适用于testAction方法。我怀疑我必须以某种方式向调度员注册模拟控制器。
答案 0 :(得分:1)
我得到了一些工作,所以我想我会在这里发布。我不确定我是否对此感到满意。
如果您希望能够测试重定向,请更改:
$this->redirect(array('action'=>'index'));
到此:
$this->redirect(array('action'=>'index'), null, false);
return 'redirected to index';
现在您的测试看起来像这样:
$data = array(...);
$result = $this->testAction(
'/people/edit/1',
array('method' => 'post', 'data' => $data));
$this->assertEqual(
'redirected to index',
$result);
控制器重定向方法的问题在于它默认调用exit(),并退出整个测试套件。此版本将false传递给重定向方法的$ exit参数,然后使用return
而不是exit()。如果您愿意,返回值只是测试用例验证的内容,尽管它与浏览器以及重定向标头一起回显。但是,只要它是一条小信息,我就不会发现任何问题。
当我们调用return
而不是exit()时,似乎没有任何可能在控制器方法之后执行的重要代码。快速测试表明该页面运行正常。