سلام دوستان.
اگر بیایم تست delete یا update رو بر اساس rowCount ای که برمیگردونن بنویسیم:
#========== index.php ==========#
if($_SERVER['REQUEST_METHOD'] == 'DELETE')
{
$bug = $queryBuilder
->table('bugs')
->where('id',request()['id'])
->delete();
json_response($bug, 204);
}
#========== CrudTest.php ==========#
/**
* @depends testItCanCreateDataWithAPI
*/
public function testItCanDeleteDataWithAPI($bug)
{
$response = $this->httpClient->delete('index.php', [
'json' => [
'id' => $bug->id
]
]);
$this->assertEquals(204, $response->getStatusCode());
$this->assertEquals(1, json_decode($response->getBody(), true));
}
آیا تست درست و مناسبیه؟ کلا چجوری از بین چند روش، بهترین شیوه تست رو انتخاب کنیم؟
(البته نمیدونم چرا اینجا متد delete من null برمیگردونه)
سلام و احترام
بعد از کد :
$response = $this->httpClient->delete('index.php', [
'json' => [
'id' => $bug->id
]
]);
شما باید اون id که برگشت داده میشه رو یه بار توی دیتابیس جستجو کنید تا اون مقدارو ببینید میتونید پیدا کنید یا خیر.
/**
* @depends testIfItCanCreateData
*
*/
public function testIfItCanDeleteOneDataWithApi($bug)
{
$response = $this->httpClient->delete('index.php', [
'json' => [
'id' => $bug->id,
]
]);
$deleted_data = $this->pdoQuetyBuilder->table('bugs')
->find($bug->id);
$this->assertEquals(204, $response->getStatusCode());
$this->assertNull($deleted_data);
}
مقداری که برگشت داده میشه باید null باشه تا مطمئن شیم داده حذف شده. توی ادامه کد هم بررسی کردیم که باید assertNull باشه.