我想测试我的CategoriesController,为此我需要模拟AppModel的方法。我坚持使用Cake docs,但我认为我的情况略有不同,因为Category模型与AppModel无关,但是从它继承。
app / Model / AppModel.php包括:
<?php
App::uses('Model', 'Model');
class AppModel extends Model
{
public function storeId()
{
return Configure::read('storeId');
}
}
app / Test / Case / Controller / CategoriesControllerTest.php包括:
<?php
App::uses('Controller', 'Controller');
App::uses('AppModel', 'Model');
class CategoriesControllerTest extends ControllerTestCase
{
public $fixtures = [...]
public function testView() {
$Categories = $this->generate('Categories', [
'models' => [
'AppModel' => [
'storeId'
],
]
]);
$Categories->AppModel
->method('storeId')
->will($this->returnValue(17));
$result = $this->testAction('/categories/view/1700007',
['return' => 'vars']
);
}
}
这会导致错误
错误:在...
中调用null上的成员函数method()
背景: 我需要模拟storeId方法,因为在CategoriesController中的view()调用期间,AppModel中的方法操纵查询,该方法使用storeId()函数来确定哪个是活动商店。