2012-05-15 19 views
1

我一直在搜索互聯網上如何嘲笑蛋糕請求。我想將控制器中可用的數據函數作爲$ this-> request-> data('whatever')。但事情與我的測試情況下腳麻嘲笑蛋糕請求剔除數據功能

$Jobs = $this->generate('Tasks' , array(
    'components' => array(  
    'RequestHandler' => array('isMobile','prefers','renderAs')) 
)); 
// Mock CakeRequest 
$request = $this->getMock('CakeRequest', array('_readInput'));  
$Jobs->RequestHandler->request = $request; 

$Jobs->RequestHandler->request->expects($this->any()) 
    ->method('data')->with('anything')->will($this->returnValue('test')); 

$result = $this->testAction('/tasks/test/', 
      array('method' => 'get', 'return' => 'vars')); 

每當我在控制器中調用$this->request->data('anything')它返回null!

請儘量幫我這

回答

0

從PHPUnit文檔:

默認情況下,給定類的所有方法都替換爲測試雙只返回NULL,除非一個返回值是例如,使用will($ this-> returnValue())進行配置。

提供第二個(可選)參數時,只有名稱在數組中的方法被替換爲可配置的測試double。其他方法的行爲不會改變。

所以你需要做這一點:

$Jobs = $this->generate('Tasks' , array(
    'components' => array(  
    'RequestHandler' => array('isMobile','prefers','renderAs')) 
)); 
// Mock CakeRequest 
$request = $this->getMock('CakeRequest', array('_readInput'));  
$Jobs->RequestHandler->request = $request; 

$Jobs->RequestHandler->request->expects($this->any()) 
    ->method('_readInput')->with('anything')->will($this->returnValue('test')); 

$result = $this->testAction('/tasks/test/', 
     array('method' => 'get', 'return' => 'vars')); 

或本:

$Jobs = $this->generate('Tasks' , array(
    'components' => array(  
    'RequestHandler' => array('isMobile','prefers','renderAs')) 
)); 
// Mock CakeRequest 
$request = $this->getMock('CakeRequest', array('data'));  
$Jobs->RequestHandler->request = $request; 

$Jobs->RequestHandler->request->expects($this->any()) 
    ->method('data')->with('anything')->will($this->returnValue('test')); 

$result = $this->testAction('/tasks/test/', 
     array('method' => 'get', 'return' => 'vars')); 

由於我不知道我CakePHP的不能告訴你這是正確的答案。 但根據這個:http://api20.cakephp.org/view_source/controller-test-dispatcher (第232行),你應該嘗試前一個。