2011-04-08 48 views
0

我是单元测试新手,并且使用SimpleTest创建了新的组件,控制器和模型测试。我正在使用CakePHP Test Suite 1.2.0.0版。我无法为帮手创建一个视图,而互联网让我无法获得帮助。这里是助手代码:CakePHP Simpletest帮手

class MyHelper extends AppHelper 
{ 
     var $helpers = array('Session'); 

     function dostuff() 
     { 
       $helpervar = $this->Session->read('Data'); 
       if(empty($helpervar)) 
       { 
         return; 
       } 
     } 
} 

而且我的测试代码是在这里:

App::import('Helper', 'MyHelper'); 


class MyHelperTest extends CakeTestCase { 

     function startTest() { 
       $this->MyHelper = new MyHelperHelper(); 
     } 

     function testRender() { 
       $this->MyHelper->dostuff(); 
     } 

     function tearDown() { 
       unset($this->Controller); 
       ClassRegistry::flush(); 
     } 

} 

和错误我收到:

 
Fatal error: Call to a member function read() on a non-object. 

我想知道如果我需要创建一个模拟视图。我对这一切都很陌生,所以任何信息将非常感激!谢谢!

回答

1

错误是由SessionHelper造成的,因为它没有自动实例化。你必须在startTest()方法手工实例吧:

function startTest() { 
    $this->MyHelper = new MyHelper(); 
    $this->MyHelper->Session = new SessionHelper(); 
} 
0

后手动创建一个实例类,你必须使用constructClasses()加载所有组件。

$Class = new ClassController(); 
$Class->constructClasses();