未调用 PHPUnit 中的模拟对象
Mock object in PHPUnit is not invoked
我的 PHPUnit 测试中有这段代码,它试图模拟一个 table 实体。但是当我尝试 运行 时,我得到了这个错误。
Expectation failed for method name is equal to
when invoked 1 time(s). Method was expected
to be called 1 times, actually called 0 times.
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。
我遗漏了一些东西,但我不知道是什么。
代码设置了一个期望值,然后什么也不做。必须有一些东西在模拟对象上实际调用 fetchSingleById
。此外,从测试的名称来看,它似乎在嘲笑它应该测试的方法。无需在不属于 PHPUnit 本身的测试用例中测试 PHPUnit。
我的 PHPUnit 测试中有这段代码,它试图模拟一个 table 实体。但是当我尝试 运行 时,我得到了这个错误。
Expectation failed for method name is equal to when invoked 1 time(s). Method was expected to be called 1 times, actually called 0 times.
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。
我遗漏了一些东西,但我不知道是什么。
代码设置了一个期望值,然后什么也不做。必须有一些东西在模拟对象上实际调用 fetchSingleById
。此外,从测试的名称来看,它似乎在嘲笑它应该测试的方法。无需在不属于 PHPUnit 本身的测试用例中测试 PHPUnit。