iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1

昨天我們已經測試了4這個數字,
但是除了4是閏年以外,
去年(2020年)應該也是閏年,
所以我們再輸入2020這個數字,
看看會不會如我們預期的跳錯誤。
我們在MyUnitTest.php裡面加入

public function test_leapyear_check_2020()
{
    $response = $this->get('/getLeapYear/2020');

    $this->assertSame("閏年", $response->getContent());
}

然後再執行
php vendor/phpunit/phpunit/phpunit tests/Feature/MyFirstUnitTest.php
https://ithelp.ithome.com.tw/upload/images/20210910/201056942w2tBxykyp.png

果然是跳錯誤了,
然後我們再修改web.php

Route::get('/getLeapYear/{id}', function($id) {
    if($id % 4 == 0)
        return "閏年";
    return "平年";
});

然後再執行一次
php vendor/phpunit/phpunit/phpunit tests/Feature/MyFirstUnitTest.php
https://ithelp.ithome.com.tw/upload/images/20210910/20105694TrMpEUOZcQ.png

果然是成功地通過了,
但是我們現在發現一個問題,
如果我們要確定我們所寫的功能是正確的,
可能需要帶入大量的資料,
然後每個資料都要這樣子寫,
那我們的程式會變得又臭又長而且不好維護,
萬一哪天閏年的規則改了,
(這應該不會,但是產品的需求是可能會修改,而且可能常常改)
那我要回來修改這幾十上百個function,
是不是累死人了,
而且很多都是重複的程式碼,
所以我們為了程式的可讀性和好維護,
明天我們就要來進行重構的動作。


上一篇
[Day 08] 簡單的單元測試實作(二)
下一篇
[Day 10] 簡單的單元測試實作(四)-關於程式的問題,一律建議重構
系列文
當拉拉肉遇到單元測試,是否能夠擦出命運的火花?31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言