看了PHPunit的斷言之後 我有點疑問 PHPUnit有什麼意義嗎? 我大可以var_dump 等一系列的調試方法來輸出變數的類型/數值/長度,有需要為了判斷這東西是什麼 而且去寫一些斷言什麼的?
可能我經驗尚淺不懂PHPUnit具體深層次的運用。。請哪位大神解惑一下
回複內容:
看了PHPunit的斷言之後 我有點疑問 PHPUnit有什麼意義嗎? 我大可以var_dump 等一系列的調試方法來輸出變數的類型/數值/長度,有需要為了判斷這東西是什麼 而且去寫一些斷言什麼的?
可能我經驗尚淺不懂PHPUnit具體深層次的運用。。請哪位大神解惑一下
var_dump是臨時性質的,phpunit是持久可反覆的
你總不可能次次都到處加var_dump來做全面測試吧?
別忘記還有個mock, 搭配起來使用.
你覺得可以用var_dump替代, 可能商務邏輯太簡單了?
我設計的類都得依賴於外部的類, 類的方法還得需要其他的內部方法協作.
資料輸入的不同會有不同的結果, 我不能每次都在瀏覽器上填10幾個資料來做測試.
考慮到這10幾個輸入, 我設計這個類時, 就會把資料分組, 一個小方法一組資料.
對小方法做單元測試時, 我只要對其依賴做一些假設(假設依賴沒有bug)和傳入期望參數(極端的和正常的), 再對其返回的結果進行斷言即可.
最後, 我再對這個類對外開放的介面做單元測試, 假設所有小方法的返回資料並斷言這個介面返回的資料.
可以看出, 單元測試還是有助於代碼結構的設計.
給個比較簡單的執行個體https://github.com/Zizaco/confide/blob/master/tests/Confide/CacheLoginThrottleServiceTest.php
在對repository這種低級類做單元測試時,我只用assert, 直接資料庫操作..
在進階類裡, 反正咱都對repository進行了測試, 就不操心資料庫問題了, 直接mock repository類.
你這個問題嘛, 我覺得問錯方向了, 應該是"為什麼單元測試", "why unit testing", 能google到很多答案的.
我剛玩unit testing沒多久, 到現在還分不清stub, spy, dummy, mock, double...
所以我上面寫的東西,你就隨便看看啊, 別太當真... 但是,有錯誤的話,歡迎指正.
同學,這個問題如果你還在那PHPUnit 和 var_dump 作比較的話,證明你沒理解單元測試的優勢!先去找找單元測試的資料理解下就知道了