首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP模拟模型在飞行控制器中加载

CakePHP模拟模型在飞行控制器中加载
EN

Stack Overflow用户
提问于 2014-03-17 18:46:56
回答 1查看 327关注 0票数 3

我正在为我的控制器编写一些单元测试,我在控制器中模拟模型时遇到了一些问题。

下面是一些代码:

代码语言:javascript
复制
class ExampleController extends AppController {
    public function some()
    {
        $this->loadModel('ModelA');
        $this->loadModel('ModelB');
        //this I want to mock
        $modelAVal = $this->ModelA->someFunctionFromModel($param);
        $modelBVal = $this->ModelB->ModelCDependentFromModelB->someFunction($param);
    }
}

在我的控制器测试用例中,我尝试使用以下代码:

代码语言:javascript
复制
public function testSome() {
    $mock = $this->generate('Example', [
        'models' => ['ModelA', 'ModelB', 'ModelC']
    ]);
    $mock->ModelA->expects($this->once())->method('someFunctionFromModel')->will($this->returnValue(true));
    $mock->ModelB->ModelC->expects($this->once())->method('someFunction')->will($this->returnValue(true));
}

错误:对成员函数的调用需要在非对象上使用()-对于我尝试使用的每个模型...

EN

回答 1

Stack Overflow用户

发布于 2014-10-01 21:12:40

这是一个古老的帖子,但我只是被同样的问题卡住了。

我是这样解决的:

代码语言:javascript
复制
public function testSome() {
    // mock your controller
    $mock = $this->generate(
        'Example',
        array(
         models' => array('ModelA'),
        )
    );
    // mock modelA and assign it to the mocked controller model
    $mock->ModelA = $this->getMockForModel('ModelA', array('someFunction'));
    $mock->ModelA
        ->expects($this->once())
        ->method('someFunction')
        ->will($this->returnValue('yeah'));
}

这只适用于直接相关的模型,而不是模拟模拟模型的模型,我不确定这是不是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22452309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档