💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ امیرحسین شکری
انتخاب بهترین شیوه تست
امیر صالحی حل شده توسط امیر صالحی

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

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