🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ ماندیس پناهیان
انتخاب بهترین شیوه تست
لهراسب باهنر حل شده توسط لهراسب باهنر

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

بهترین پاسخ
لهراسب باهنر ۱۳ آذر ۱۳۹۹، ۱۸:۴۲