iT邦幫忙

2023 iThome 鐵人賽

0
DevOps

嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!系列 第 34

【Walking Skeleton】Day34 - Pest:來寫比 PHPUnit 還要簡潔的自動測試吧!

  • 分享至 

  • xImage
  •  

Pest 是由 PHPUnit 包裝和新增一些功能而成,它可以使用原本的 PHPUnit 語法,也可以使用更簡潔美觀方式撰寫測試程式


移除 PHPUnit

因為 Pest 本身就包含了 PHPUnit,所以原本的 PHPUnit 可能會跟 Pest 衝突,移除 PHPUnit 後就不用在安裝 Pest 時加 -W 參數

在移除之前呢,先見它最後一面

vendor/bin/phpunit

開啟 composer.json,跟它說個再見

移除 PHPUnit

composer remove phpunit/phpunit --dev


安裝 Pest

打開官網,找到安裝的教學
https://pestphp.com/docs/installation

安裝 Pest

composer require pestphp/pest --dev

如果是使用 Laravel,要再安裝一個外掛,為了可以直接使用 php artisan test 跑 Pest 的測試

composer require pestphp/pest-plugin-laravel --dev

最後別忘了這一步,初始化 Pest

vendor/bin/pest --init

中間會問說要不要開啟 Github 幫它按星星

完成後 tests 資料夾中就會出現一個 Pest.php 檔案,這個是 Pest 的設定檔,詳細的使用方式可以查看官網文件,現在就可以開始使用囉


使用 Pest

使用方式很簡單,跟 PHPUnit 完全一樣,在終端機輸入指令就可以了

vendor/bin/pest

我們一行測試程式都不用改就無痛轉移到 Pest 囉

不過裝都裝了,當然要試試新寫法啦,在官網找到範例的地方
https://pestphp.com/docs/writing-tests

看起來只要在 test 函式中放兩個參數,測式說明和匿名函式就可以了

也可以用「它」作為開頭,直接寫它做了什麼事情,或是它的結果應該是什麼

我們來改寫之前的 about 頁面的測式

先在下方用 it 把測式說明和匿名函式打好

把方法中的測試程式全部複製過來到函式中

最後把上面那些東西通通刪掉~

對比一下,變得超簡潔的對吧

再來跑一次,凡是有修改就要跑自動測試,可以提早發現錯誤

vendor/bin/pest

測試寫成字串而不是方法名稱真是好處多多,字不會黏在一塊、可以使用標點符號、甚至是中文,但是就沒辦法用 GUI 操作測試了,應該不久後就會支援了啦

不過要一個個改實在很麻煩,其實官網提供了一個工具,可以一個指令就把全部的測試轉換成新的寫法


從 PHPUnit 轉移到 Pest

從官網找到轉換的教學
https://pestphp.com/docs/migrating-from-phpunit-guide

安裝飄移外掛

composer require pestphp/pest-plugin-drift --dev

開始飄移

vendor/bin/pest --drift

總共有三個測試,轉換了兩個,一個是我們剛剛手動修改的,打開檔案會發現已經都轉換好了

再跑一次測試,凡是有修改就要跑自動測試,可以提早發現錯誤

pest

順利過關~

最後別忘了用 git 紀錄一下這次的變更


上一篇
【Walking Skeleton】Day33 - 調整 Laravel Sail 容器設定
系列文
嘿,稍等一下!別急著開發功能,先來打造 Walking Skeleton 吧!34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言