ZF2 Mock在未定义的方法上崩溃

时间:2016-09-19 19:56:43

标签: unit-testing zend-framework

我跟随this tutorial在ZF2上进行单元测试。我熟悉单元测试,所以我非常了解发生了什么。

我得到AppSettings

如果我正确关注,控制器会在我的模拟对象上调用PHP Fatal error: Call to undefined method Mock_AlbumTable_9fb22412::fetchAll() in [my controller's route here]。奇怪的部分是为什么它是未定义的,如果我在模拟期望中声明它。

我的测试代码在提供的链接上完全相同(字面上复制/粘贴),我的fetchAll类也来自教程:

AlbumTable

我在这里缺少什么?

编辑:从网络浏览器访问所述控制器的路由是有效的,所以它至少不是<?php namespace Album\Model; use Zend\Db\TableGateway\TableGateway; class AlbumTable { protected $tableGateway; public function __construct(TableGateway $tableGateway) { $this->tableGateway = $tableGateway; } public function fetchAll() { $resultSet = $this->tableGateway->select(); return $resultSet; } // ... more code ... } 类的问题。< / p>

1 个答案:

答案 0 :(得分:0)

你错过了这一行:

$albumTableMock=$this->getMockBuilder('Album\Model\AlbumTable')
    ->disableOriginalConstructor()
    ->setMethods(array('fetchAll'))  // <- you miss this line
    ->getMock();