2016-11-18 2 views
1

У меня этот код в моем тесте PHPUnit, и он пытается издеваться над сущностью таблицы. Но когда я пытаюсь запустить его, я получаю эту ошибку.Mock object в PHPUnit не вызывается

Ожидание не выполнено для имени метода, равного при вызове 1 раз (а). Предполагалось, что метод будет называться 1 раз, фактически называемый 0 раз.

public function testFetchSingleById() 
{ 
    $mockJobTable = $this->getMockBuilder('Job\Table\JobTable') 
     ->disableOriginalConstructor() 
     ->setMethods(['fetchSingleById']) 
     ->getMock(); 

    $firstDateRun = new \DateTime('2016-06-03'); 
    $firstDateRun = $firstDateRun->format('Y-m-d H:i:s'); 

    $job = new JobEntity(); 
    $job->exchangeArray([ 
     'id' => 1, 
     'name' => 'parse', 
     'params' => '--dry-run', 
     'setFirstDateRun' => $firstDateRun, 
     'period' => '* * * * *' 
    ]); 

    $mockJobTable->expects($this->once()) 
       ->method('fetchSingleById') 
       ->with(1) 
       ->will($this->returnValue($job)); 
} 

метод, который я тестирование:

class JobTable extends TableGateway implements JobTableInterface 
{ 
    public function __construct(Adapter $adapter, JobEntity $entity) 
    { 
     $resultSet = new ResultSet(); 
     $resultSet->setArrayObjectPrototype($entity); 
     parent::__construct('job', $adapter, null, $resultSet); 
    } 

    public function fetchSingleById($id) 
    { 
     $select = $this->getSql()->select(); 
     $select->where->equalTo('id', $id); 
     return $this->selectWith($select)->current(); 
    } 
} 

Я использую ZF3.

Мне ничего не хватает, но я не знаю что.

+0

, пожалуйста, поделитесь всем тестовым кодом и тестируемым методом – Matteo

ответ

1

Код устанавливает ожидание, а затем ничего не делает с ним. Должно быть что-то, что на самом деле вызывает fetchSingleById на макет предмета. Кроме того, из названия теста он выглядит так, будто он насмехается над тем методом, который он должен тестировать. Нет необходимости тестировать PHPUnit в тестовом примере, который не является частью самого PHPUnit.