1

有时我在测试时遇到问题。测试已执行,我什至可以获得操作的结果,但测试没有显示绿色或红色消息,告诉我测试是否成功运行。(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'));        
    }
4

1 回答 1

0

这是 SimpleTest (cakephp <= 1.3) 还是 PHPUnit (>1.3)?

万一它的 SimpleTest 你必须在你的控制器测试中处理重定向(阅读关于控制器测试的 Mark Storys 文章)。基本上,您构建一个测试类,它继承自您正在测试的控制器类,然后覆盖重定向和其他一些方法(这里有一些来自文章):

class TestPostsController extends PostsController {
    ...     
    function redirect($url, $status = null, $exit = true) {
        $this->redirectUrl = $url;
    }   
    ...
}

比你在测试用例中使用这个修改过的控制器。

对于 CakePHP 2 和 PHPUnit,我什至在某些布局中调用 header() 函数时遇到了一些问题,这破坏了 html 结构和测试端的 css。

于 2012-04-24T19:02:12.537 回答