2016-09-19 3 views
1

Я следую this tutorial для модульных испытаний на ZF2. Я знаком с модульным тестированием, поэтому я в значительной степени понимаю, что происходит.ZF2 Mock сбой по неопределенному методу

Я получаю 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 ... 
} 

Что я здесь отсутствует?

Редактировать: Посещение указанного маршрута контроллера из веб-браузера работает, поэтому это не проблема с классом AlbumTable, по крайней мере.

ответ

0

Вы пропустите эту линию:

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