iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
Modern Web

當拉拉肉遇到單元測試,是否能夠擦出命運的火花?系列 第 23

[Day 22] 針對API的單元測試(二)

我們昨天已經測試了一個Json的API,
那我們今天將測試方法改成這樣

public function test_user_add_name2()
{
    $this->post('/api/user/add', ['name' => 'Sally'])
         ->seeJsonEquals([
             'created' => true,
         ]);
}

seeJsonEquals是要求必須完全一樣才會通過,
不過我們的API裡面其實回傳了兩個參數,
所以我們預期應該是不會通過的,
那我們來測試看看
php artisan test
https://ithelp.ithome.com.tw/upload/images/20210923/20105694MOAn8rQiBR.png

果然跟我們預測的是一樣的,
現在我們來修改我們的API讓它跟我們要的完全一樣,
其實也很簡單,
就把name那一行註解掉就好了
APIController.php

//$result['name'] = $input['name'];

然後再測試一次
php artisan test
https://ithelp.ithome.com.tw/upload/images/20210923/201056949ObCvX5htO.png

順利地通過了!

另外如果是用新版的TestCase,
改成這樣是一樣的結果

public function test_user_add_name()
{
    $this->post('/api/user/add', ['name' => 'Sally'])
            ->assertStatus(200)
            ->assertJson([
            'created' => true,
        ]);
}

public function test_user_add_name2()
{
    $this->post('/api/user/add', ['name' => 'Sally'])
        ->assertStatus(200)
        ->assertExactJson([
                'created' => true,
            ]);
}

上一篇
[Day 21] 針對API的單元測試(一)
下一篇
[Day 23] 針對API的單元測試(三)
系列文
當拉拉肉遇到單元測試,是否能夠擦出命運的火花?31

尚未有邦友留言

立即登入留言