انتخاب بهترین شیوه تست

پرسیده شده
فعالیت 1238 روز پیش
دیده شده 424 بار
0

سلام دوستان.
اگر بیایم تست 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 برمیگردونه)

فایل پیوست

1
حذف شده

سلام و احترام

بعد از کد :

$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 باشه.

فایل پیوست

امیر صالحی

توسط

امیر صالحی

13 آذر 99

حذف شده
آره امیر جان. این روشی بود که استاد توضیح دادن. میخواستم بدونم با rowCount هم تست درستیه؟ اگر جواب مثبته از بین این دو روش کدوم رو انتخاب کنیم؟
حذف شده
بله اگه میخواهید فقط متوجه بشید که یک Record حذف شده میتونید از rowCount استفاده کنید ولی ما اینجا find میکنیم تا مطمئن بشیم دقیقا همون مقدار حذف شده
امیر صالحی

14 آذر 99