【发布时间】:2018-10-01 12:47:04
【问题描述】:
我有一个使用 model->find() 的方法。据我了解编写测试,我必须使用模拟。我是编写测试的新手。你能告诉我搜索的方法吗?
function findSomethingInDB($client_id, $expiredLag): array
{
$date = date("Y-m-d H:i:s", time() - $expiredLag);
$conditions = [
"DB.expires >" => $date,
'client_id' => $client_id,
'state' => 0,
];
$result = $this->find('all', [
'recursive' => -1,
'conditions' => $conditions,
]);
return $result;
}
这是我在 php 单元测试中的代码。我试着给自己写,但远足是不对的。
public function testFindSomethingInDB()
{
$client_id = '1';
$expireLag = '0';
$expected = [
'0' => [
'DB' => [
'id' => '3068',
'procedure_id' => '1',
'client_id' => '1',
'object' => 'test',
'date' => '2034-02-09 22:05:37',
'entity' => 'test',
'freshness' => '-354923520',
'expires' => '2022-11-12 00:13:37',
],
],
];
$mysql = $this->getMockBuilder(ErrorK50::class)
->getMock();
$mysql->expects($this->any())
->method('findSomethingInDB')
->with($this->equalTo($client_id), $this->equalTo($expireLag))
->will($this->returnValue($expected));
$errorK50 = new ErrorK50($mysql);
$result = $errorK50->findSomethingInDB($client_id, $expireLag);
$this->assertEquals($expected, $result);
}
项目使用phpunit test 6.5.9
【问题讨论】:
-
你想测试什么?目前还不清楚。
findErrorInDB()的功能是什么?那个函数是在调用findSomethingInDB()吗? -
findSomethingInDB 调用方法 find
标签: cakephp-2.0 phpunit