У меня есть метод, который использует модель-> 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 6.5.9