建立外掛

社群外掛對於向 Pest 社群提供額外功能至關重要,而 Pest 團隊優先考量的是讓框架的核心小又快。在本章節中,我們將探討如何建立自己的外掛並與社群分享。

開發自己的外掛最簡單的方法是,從 pest-plugin-template 開始。若要從範本儲存庫產生新的儲存庫,請按一下 GitHub 的「使用此範本」按鈕,並將新的儲存庫命名為「pest-plugin-".

複製儲存庫後,請務必修改 composer.json 檔案中的「名稱」和「說明」欄位以符合您的外掛。

Pest 外掛能夠透過 $this 變數公開自訂測試方法,加入命名空間功能,定義自訂預期值以及提供自訂 CLI 選項。

加入方法

讓我們透過透過 $this 變數建立新的測試方法,開始建置外掛。若要達成此目的,請在外掛中定義 PHP 特質。

1namespace YourGitHubUsername\PestPluginName;
2 
3trait MyPluginTrait
4{
5 public function myPluginMethod()
6 {
7 //
8 }
9}

為了透過 Pest 呼叫這個特質方法,我們必須告知 Pest 應讓它可用。這可以使用建立 Autoload.php 檔案並在當中放入下列內容的方式達成。

1use YourGitHubUsername\PestPluginName\MyPluginTrait;
2 
3Pest\Plugin::uses(MyPluginTrait::class);

最後,我們需要更新外掛的 composer.json 檔案,以載入我們的 Autoload.php 檔案以及外掛原始碼。

1"autoload": {
2 "psr-4": {
3 "YourGitHubUsername\\PestPluginName\\": "src/"
4 },
5 "files": ["src/Autoload.php"]
6},

將外掛發布到 Packagist 之後,使用者將能夠透過 Composer 安裝外掛。安裝完畢後,他們將能夠在測試封閉中存取外掛的功能。

1test('plugin example', function () {
2 $this->myPluginMethod();
3 
4 //
5})

加入功能

外掛也可以定義額外的命名空間功能,這些功能通常會宣告在外掛的 Autoload.php 檔案中。

1namespace YourGitHubUsername\PestPluginName;
2 
3function myPluginFunction(): void
4{
5 //
6}

在外掛功能中,您可以存取目前的 $this 變數,這通常可在不帶任何引數呼叫 test() 功能的時候,讓測試封閉使用。

1namespace YourGitHubUsername\PestPluginName;
2 
3use PHPUnit\Framework\TestCase;
4 
5function myPluginFunction(): TestCase
6{
7 return test(); // Same as `return $this;`
8}

修改外掛的 composer.json 檔案以自動載入 Autoload.php 檔案後,使用者就能在他們的測試中輕鬆存取您的功能。

1use function YourGitHubUsername\PestPluginName\{myPluginFunction};
2 
3test('plugin example', function () {
4 myPluginFunction();
5 
6 // ...
7}

加入自訂預期值

自訂的期待範例可加入到您的外掛程式 Autoload.php 檔案中。有關如何建立自訂的期待範例資訊,請參閱 自訂的期待範例 的完整文件。

加入 Arch 預設值

如果您的外掛程式提供自訂 Arch 預設值,您可以在 Autoload.php 檔案中定義它。

1pest()->preset('ddd', function () {
2 return [
3 expect('Infrastructure')->toOnlyBeUsedIn('Application'),
4 expect('Domain')->toOnlyBeUsedIn('Application'),
5 ];
6});

選擇性地,可能取得在封裝回呼函式的第一個參數上的應用程式 PSR-4 名稱空間。

1pest()->preset('silex', function (array $userNamespaces) {
2 dump($userNamespaces); // ['App\\']
3});

您會看到,在 Pest 上編寫外掛程式可以作為您的開源專案的一個很棒的起點!在下一章節中,我們將探索「高階測試」的概念:高階測試