Ложный объект в PHPUnit не вызывается

У меня есть этот код в моем тесте 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.

Я что-то упустил, но я не знаю что.

1 ответ

Решение

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

Другие вопросы по тегам