在PHP程式設計中,Behat是一個非常有用的工具,它可以幫助程式設計師在開發過程中更好地理解業務需求,並保證程式碼的品質。在本文中,我們將介紹如何在PHP程式設計中使用Behat。
一、 Behat是什麼?
Behat是一個行為驅動開發(BDD)框架,它透過語言的描述方式(由Gherkin語種編寫的用例)與PHP程式碼耦合,從而實現了程式碼和業務需求的協同工作。使用Behat做測試,讓程式設計師從單純的語法和行為校驗,轉換為用自然語言來表達業務實例並自動驗證這些實例。 Behat完美地銜接了「客戶端」的描述需求和「服務端」的實作處理。
二、 Behat的安裝
使用composer(PHP套件管理員)來安裝Behat。在專案目錄下開啟控制台(terminal),輸入以下指令:
composer require --dev behat/behat
#提醒:--dev表示Behat是在開發中使用。如果你在生產環境使用Behat,應當不加--dev參數。
三、 寫Feature
完成安裝後,我們可以在APP_PATH/features/目錄下創建Feature:
Feature: 搜索 我想在“首页”上搜索某个商品 为了快捷找到我需要的商品 我需要查询到相应结果 Scenario: 搜索结果是正确的 Given 我在“首页”页面 When 我输入“水杯”作为搜索关键字 And 我点击“搜索”按钮 Then 我应该看到网页标题包含“水杯”
上述Gherkin語言描述了一個Feature,它包含了一組場景(Scenario),描述如何完成一次搜尋並驗證結果。
四、 配置Behat
我們需要透過設定檔config/behat.yml來定義Behat的設定選項。以下是一個簡單的設定檔:
default: suites: default: contexts: - FeatureContext filters: tags: '' extensions: BehatMinkExtension: base_url: "http://localhost/" files_path: "%paths.base%/persistent/files" goutte: ~ selenium2: ~ BehatSymfony2Extension: kernel: env: test debug: true
這個設定檔告訴Behat需要使用哪個Context類,並且需要使用什麼樣的瀏覽器。
五、 寫Context類別
我們需要建立一個Context類別來處理Feature中定義的步驟(steps),並呼叫所寫的測試程式碼來驗證程式碼的正確性。 Codeception和PHPUnit是一些支援Behat的測試函式庫,我們將使用PHPUnit來示範如何寫Context類別。
在APP_PATH/features/bootstrap/目錄下建立FeatureContext.php,並加入以下程式碼:
<?php use BehatBehatContextContext; use BehatBehatHookScopeBeforeFeatureScope; use BehatBehatTesterExceptionPendingException; use BehatMinkWebAssert; use BehatMinkExtensionContextMinkContext; use PHPUnitFrameworkAssert as PHPUnit; class FeatureContext extends MinkContext implements Context { public function __construct($baseUrl) { $this->baseUrl = $baseUrl; } /** * @param BeforeFeatureScope $scope */ public static function setup(BeforeFeatureScope $scope) { // 配置数据库等其他代码 } /** * @Given /^我在“(.*)”页面$/ */ public function 在页面($page) { $this->visitPath(sprintf('/%s', $page)); } /** * @When /^我输入“(.*)”作为搜索关键字$/ */ public function 输入作为搜索关键字($keyword) { $page = $this->getPage(); $searchForm = $page->find('css', 'form[action="/search"]'); $searchInput = $searchForm->find('css', 'input[type="text"]'); $searchInput->setValue($keyword); } /** * @When /^我点击“(.*)”按钮$/ */ public function 点击按钮($button) { $page = $this->getPage(); $button = $page->find('css', sprintf('input[type="submit"][value="%s"]', $button)); $button->click(); } /** * @Then /^我应该看到网页标题包含“(.*?)”$/ */ public function 应该看到网页标题包含($expected) { PHPUnit::assertTrue(stripos($this->getSession()->getPage()->getTitle(), $expected) !== false); } }
上述程式碼定義了一組步驟(steps),對Feature中定義的場景( scenario)進行了實現。
六、執行測試
在控制台中執行下列指令:
vendor/bin/behat
執行指令後,Behat會依照config/behat .yml檔案中的配置對Feature檔案進行執行。控制台可能會有一些進度條和錯誤提示,最後會列出測試的通過或失敗訊息。
在這裡,我們已經學習如何在PHP程式設計中使用Behat來完成測試。使用Behat可以提高業務程式碼的表達能力,減少開發過程中的品質問題,增強了團隊開發的協作和整體推進效率。
以上是如何在PHP程式設計中使用Behat?的詳細內容。更多資訊請關注PHP中文網其他相關文章!