Ложный объект в 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.