2011-09-13 44 views
3

我一直抨擊我的頭靠在牆上試圖找出爲什麼我不能讓我的夾具正確加載。當我嘗試運行我的測試時,我的佈局被渲染。如果我將夾具註釋掉,測試運行正常。我已經完成了這100次,我似乎看不出有什麼問題。CakePHP單元測試夾具名稱約定Argh?

我的繼承人Videosview.test.php

App::import('Model','Videosview'); 

class VideosviewTest extends Videosview { 
    var $name = 'Videosview'; 
    //var $useDbConfig = 'test_suite'; 
} 

class VideosviewTestCase extends CakeTestCase { 
    var $fixtures = array('app.videosview'); 

    function testIncrementTimer() { 
     $this->autoLayout = $this->autoRender = false; 

     $this->Videosview =& ClassRegistry::init('Videosview'); 
     //$video_view = $this->find('first'); 
     $result = $this->Videosview->increment_timer($video_view['Videosview']['video_id'],$video_view['Videosview']['user_id'],1); 
     $this->assertTrue(true); 
    } 
} 

這是我videosview_fixture.php奇怪的代碼

class VideosviewFixture extends CakeTestFixture { 
    var $name = 'Videosview'; 

    var $import = array('model' => 'Videosview', 'records' => true); 
} 
+0

是的,我們從來沒有找到答案: - ( 我已經被移到另一個項目,所以我不會積極尋求答案,但我最終想看到一個答案。 – Zetaphor

回答

1

地塊出現,它看起來像你不知道如何測試使用。問題不是來自您的夾具導入。

$ this-> assertTrue(true)將始終返回true。沒有必要聲明VideosviewTest。

由於我不知道你increment_timer方法是應該做的,我不能爲它編寫一個測試,但是讓我們假設它返回1傳遞的值+:

function increment_timer($id = null){ 
    return $id++; 
} 

你的測試用例應該是

App::import('Model', 'Videosview'); 

class VideosviewTestCase extends CakeTestCase { 
    var $fixtures = array('app.videosview'); 

    function startTest() { 
     $this->Videosview =& ClassRegistry::init('Videosview'); 
    } 

    function endTest() { 
     unset($this->Videosview); 
     ClassRegistry::flush(); 
    } 

    function testIncrementTimer() { 
     $input = 1; 

     // let's test increment_timer function by asserting true that return value is $input + 1, green bar 
     $this->assertTrue($this->Videosview->increment_timer($input) == ($input+1), 'Should return 2'); 
     // let's test increment_timer function by asserting false that return value is $input + 2, green bar 
     $this->assertFalse($this->Videosview->increment_timer($input) == ($input+2), 'Should not return 3'); 
     //the following returns an error as return value is not equal to $input + 2, Red bar 
     $this->assertTrue($this->Videosview->increment_timer($input) == ($input+2), 'Should return 2'); 
    } 
} 

這是你應該得到的東西,並預計

Test screenshot

+0

我不再在這個項目上,甚至不再與這個公司在一起,但這看起來像是一個寫得很好的答案,是什麼是一個非常困難的問題。謝謝kaklon! – Zetaphor