我有时会遇到测试问题。执行测试,我甚至可以获得操作的结果,但测试没有显示其绿色或红色消息,告诉我测试是否成功运行。 (28/28测试方法完成:28次通过,0次失败,95次断言和0次异常......),时间,峰值记忆......等。
例如。只有当我尝试执行此测试时,它才会崩溃:
public function testGetHotVideo() {
$result = $this->testAction("/posts/getHotVideo/");
$this->assertEquals($result, 'GoG_Tv5G17M');
}
它称之为:
public function getHotVideo(){
$video = $this->Post->getHotVideo();
return $video[0][0]['video'];
}
并正确返回视频字符串。因此它甚至可以打印在测试变量$ result。
上这里发生了什么?
我还注意到,当我调用重定向到某个视图的方法时,它会发生相同的情况。 在这种情况下,使用Cake Bake创建默认删除:
public function delete($id = null){
$this->Comment->id = $id;
if (!$this->Comment->exists()) {
throw new NotFoundException(__('Invalid comment'));
}
if ($this->Comment->delete()) {
$this->Session->setFlash(__('Comment deleted'));
return $this->redirect(array('controller' => 'posts', 'action' => 'index'));
}
$this->Session->setFlash(__('Comment was not deleted'));
return $this->redirect(array('controller' => 'posts', 'action' => 'index'));
}
答案 0 :(得分:0)
这是SimpleTest(cakephp< = 1.3)还是PHPUnit(> 1.3)?
如果是SimpleTest,您必须在控制器测试中处理重定向(read Mark Storys article on controller testing)。基本上你构建了一个测试类,它继承自你正在测试的控制器类,而不是覆盖重定向和其他一些方法(这里有一些来自文章):
class TestPostsController extends PostsController {
...
function redirect($url, $status = null, $exit = true) {
$this->redirectUrl = $url;
}
...
}
比你在测试用例中使用这个经过修改的控制器。
使用CakePHP 2和PHPUnit我甚至在一些布局中调用header()函数时遇到了一些问题,这打破了html结构和测试端的CSS。