Cake2中的单元测试:如何模拟AppModel函数?

时间:2017-09-05 16:34:37

标签: php unit-testing cakephp cakephp-2.x

我想测试我的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()函数来确定哪个是活动商店。

0 个答案:

没有答案