新團隊是用PHP開發的
所以我剛到這支團隊 第一個任務就是將Unit Test的觀念帶進來
可是PHP 我不熟
沒關係 Unit Test 的觀念都大同小異
" 偷 天 換 日 "
但我今天卡到一個難關
我們的 Production Code 很喜歡使用 static function 及 define
因此在這種情況下 怎麼讓 Production Code 變成 testable呢?
Production Code
原始判斷用了 define
而且在PHP中 define 還不能被替換掉
試了 Mock 等方法都沒效
而且 static function 找不到地方Dependency Injection
所以嘗試在參數上動手腳
希望在不影響原有行為下 能夠讓 Production Code 可以被測試
我在參數列當中加了一個參數 $fromOutside
預設值是null
意思是如果 caller 沒有給這個參數 預設是 null
如果是 null 我就assign define "DEFINESAMPLE" 給它
See ~
是不是跟 Production Code 的行為一致了
那 testing code 怎麼寫呢?
我們想怎麼換就怎麼換了
OK Let's write the unit test in PHP !
GO GO GO !
所以我剛到這支團隊 第一個任務就是將Unit Test的觀念帶進來
可是PHP 我不熟
沒關係 Unit Test 的觀念都大同小異
" 偷 天 換 日 "
但我今天卡到一個難關
我們的 Production Code 很喜歡使用 static function 及 define
因此在這種情況下 怎麼讓 Production Code 變成 testable呢?
Production Code
原始判斷用了 define
而且在PHP中 define 還不能被替換掉
試了 Mock 等方法都沒效
而且 static function 找不到地方Dependency Injection
所以嘗試在參數上動手腳
希望在不影響原有行為下 能夠讓 Production Code 可以被測試
我在參數列當中加了一個參數 $fromOutside
預設值是null
意思是如果 caller 沒有給這個參數 預設是 null
如果是 null 我就assign define "DEFINESAMPLE" 給它
See ~
是不是跟 Production Code 的行為一致了
那 testing code 怎麼寫呢?
我們想怎麼換就怎麼換了
OK Let's write the unit test in PHP !
GO GO GO !