Functional and Acceptance Test with Codeception

緣起

Codeception 是一套於 2011 年問世的測試框架,它涵蓋了單元測試 (unit test)/功能測試 (functional test)/驗收測試 (acceptance test)。

以往 PHP 的 BDD 開發習慣採用 Behat,因為它的 Cucumber feature file 是業界約定成俗 (de facto) 的標準。
而這次手邊的專案是以 RESTful API 為中心,為了充分實現 CI/CD,逐漸抬頭的 BDD 與隨之興起的 ATDD 勢不可免,因此決定導入 Codeception…

實戰

對於 RESTful API 專案來說,Codeception 與 Behat 比起來有兩項優勢:

1 Request/Reply 直接支援 JSON/XML
PATCH 為例,給定 associative array,它會幫你組成 HTTP parameter,如以下內容將變成 Token=eyJpdiI6ImVjiZTc1In0=&Delivered=true

$I->sendPATCH('/orders', [
    'Token' => 'eyJpdiI6ImVjiZTc1In0=',
    'Delivered' => true
]);

預設 Content-Typeapplication/x-www-form-urlencoded,也可以自行指定為 application/json,參數將以 JSON 編碼送出。

2 內容驗證較直觀
如欲驗證 JSON API 內容是否包含預期值,一個函式即可搞定;Behat 則需借助 PHPUnit 的 assertion。

$I->seeResponseContainsJson([
    'Count' => 10
]);

產出的測試報告長得像這樣子
Codeception Report

參考資料
1. Codeception REST module

Leave a Reply

Your email address will not be published.