Using Composer Learning Unit Test Part 2
PHP Unit Test
- 要如何直接用assertEquals的function呢?
- 因為每一次都會用到$this->assertEquals()有點多餘
- 找到實際定義assertEquals的function整理成一個檔案
- 讓phpunit.xml直接參考到bootstrap.php自定義的檔案
1 | // tests/bootstrap.php |
-
測試的種類
- Unit Test < Integration Test < Function Test < Acceptance Test
- Unit Test
- Basic Test
- Integration Test
- 測試兩個獨立系統是否能正常運作
- Function/Acceptance Test
- 測試過Unit Test和Integration Test不一定這一階段就會過
- Acceptance Test/配合Selenium測試UI
-
mock的概念
- 不在乎run的內容,只關注那個function是否有被呼叫到了
- swap out the actual action
- 和new 物件的作法比較(會實際呼叫到物件定義的方法)
- 可以用於依賴注入(controller有使用到其他物件的資料)
1 | $mock = Mockery::mock('MockDependency\Type\StripeBilling'); //要寫完整路徑 |
- 依賴注入
- 如果有定義新的namespace,記得先用composer dump,autoload才找的到檔案
- 如果程式有在classmap中定義,require的時候就不用寫__DIR__取路徑
- Single Responsibility
- 驗證controller的時候,記得加上return返回結果
- mock andReturn最後不會返回一個值,不需要再用一個變數來接
- 用php指令+檔案位置來確認是否頁面能正常執行
1 | // 方法1:未使用依賴注入的寫法 |