Laravel Testing
Contents
接下來我決定我要分享的部分就是關於測試的部分,我指的可不是我們在前端頁面點一點、拉一拉的肉眼測試喔,而是利用程式測試程式。在 php 有一個很有名的工具:PHPUnit,這麼湊巧的是,Laravel 也結合了這個部分,很巧妙的讓我們也能夠輕鬆的使用 phpunit,搭上 TDD 的方法,讓我們更能夠寫出優秀、強韌的程式來。
資料夾
首先讓我們看到在 Laravel 專案底下,有一個tests
的資料夾,賓果!那就是我們測試所放的部分,Feature
是放置比較針對功能面,需求面功能的測試類別,而Unit
則是放置關於檔案,像是 Model、Services 等等的測試類別,別急,接下來我會舉一些例子讓你們更加清楚一些。
如何執行
|
|
就這麼簡單,把 vendor 裡面的 bin 有一個 phpunit,把他呼叫起來就好了,如果你什麼都還沒做的話應該會類似以下的畫面
|
|
ㄟ ?哪裡來的兩個測試?哈,原來是 Laravel 自己就附帶兩個測試了,一個是Feature/ExampleTest.php
,另一個則是Unit/ExampleTest.php
然後你會看到類似assert
為前綴的函式,那就是可以讓我們做結果對應的函式喔。詳細的使用信息你可以參考這個文件:https://laravel.com/docs/6.x/http-tests#available-assertions
做個示範:以新增文章還有測試 Relationship 為例
接下來,我們來做個範例測試,測試我們之前寫的新增文章還有測試 Relationship 的部分。
新增文章(Feature)
|
|
接下來你就會看到在feature
底下有一個ArticleTest.php
,之後請將裡面的TestExample
拿掉並貼上
|
|
執行指令(filter 的參數可以幫助我們只要指定某個測試,而這個參數就是每個 function 去掉前面的 test 即可)
|
|
接下來如果你拿到
|
|
那你就順利囉~~
測試 Relationship(Unit)
接下來我們也順便講關於unit
的部分,測試 Article 和 Tag 之間的關係
|
|
接下來你就會看到在unit
底下有一個ArticleModelTest.php
,之後請將裡面的TestExample
拿掉並貼上
|
|
執行指令(filter 的參數可以幫助我們只要指定某個測試,而這個參數就是每個 function 去掉前面的 test 即可)
|
|
接下來如果你拿到
|
|
那恭喜你,結束本日的課程。
要看完整程式碼的可以參考這裡:https://github.com/r567tw/Make-PHP-Great-Again/commit/0d29855f462cecc952f33cefd51ce0696ee2bb12