日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

淺談如何提高PHP代碼質量之端到端集成測試

瀏覽:19日期:2022-09-07 09:37:29
目錄概述1、測試的結構2、上下文3、如何使用Behat 總結概述

在這里,我們可以使用為行為驅動開發構建的工具——官方 PHP 的 Cucumber 實現——Behat。我們可以通過運行以下代碼來安裝它:

$ php composer.phar require --dev behat/behat

增加一個目標到 build.xml(在本文的第一部分中描述了 Phing 設置)

<target name='behat'><exec executable='bin/behat' passthru='true' checkreturn='true' /></target>…<target name='run' depends='phpcs,phpcpd,phan,phpspec,behat' />

然后,你應該為文件 features/price.feature 的測試創建一個規范。

Feature: Price Comparison In order to compare prices As a customer I need to break the currency barrier Scenario: Compare EUR and PLN Given I use nbp.pl comparator When I compare “100EUR” and “100PLN” Then It should return some result

這個測試場景非常容易閱讀,并且應該給你一個關于該特性應該如何工作的良好印象。不幸的是,計算機通常并不真正理解人類語言,所以現在是為每一步編寫代碼的時候了。

你可以通過運行 ./bin/behat-init 來生成它的代碼模板。它應該會創建一個這樣的類:

//features/bootstrap/FeatureContext.php use BehatBehatContextSnippetAcceptingContext;use BehatGherkinNodePyStringNode;use BehatGherkinNodeTableNode;class FeatureContext implements SnippetAcceptingContext{/** * Initializes context. */ public function __construct() { }}

然后你可以執行:

$ bin/behat --dry-run --append-snippets

Behat 將自動為場景中定義的每個步驟創建函數。現在你可以通過填充函數的主體來開始實現真正的檢查:

// features/bootstrap/FeatureContext.php<?phpuse BehatBehatContextContext;use DomainPrice;use DomainPriceComparator;use InfrastructureNBPPriceConverter;/*** Defines application features from the specific context.*/class FeatureContext implements Context{/** @var PriceComparator */ private $priceComparator;/** @var int */ private $result; /** * Initializes context. * * Every scenario gets its own context instance.* You can also pass arbitrary arguments to the* context constructor through behat.yml. */public function __construct() { } /** * @Given I use nbp.pl comparator */ public function iUseNbpPlComparator() {$this->priceComparator = new PriceComparator(new NBPPriceConverter());} /** * @When I compare :price1 and :price2 */public function iCompareAnd($price1, $price2) {preg_match(’/(d+)([A-Z]+)/’, $price1, $match1); preg_match(’/(d+)([A-Z]+)/’, $price2, $match2);$price1 = new Price($match1[1], $match1[2]);$price2 = new Price($match2[1], $match2[2]);$this->result = $this->priceComparator->compare($price1, $price2); } /** * @Then It should return some result */ public function itShouldReturnSomeResult() {if (!is_int($this->result)) {throw new DomainException(’Returned value is not integer’);} }}

最后,使用 ./bin/phing 運行所有的測試。你應該得到以下結果:

Buildfile: /home/maciej/workspace/php-testing/build.xmlMyProject > phpcs: MyProject > phpcpd: phpcpd 4.0.0 by Sebastian Bergmann.0.00% duplicated lines out of 103 total lines of code. Time: 17 ms, Memory: 4.00MB MyProject > phan: MyProject > phpspec: / skipped: 0% / pending: 0% / passed: 100% / failed: 0% / broken: 0% / 3 examples2 specs3 examples (3 passed)15ms MyProject > behat: Feature: Price Comparison In order to compare prices As a customer I need to break the currency barrier Scenario: Compare EUR and PLN # features/price.feature:6 Given I use nbp.pl comparator# FeatureContext::iUseNbpPlComparator() When I compare '100EUR' and '100PLN' # FeatureContext::iCompareAnd() Then It should return some result # FeatureContext::itShouldReturnSomeResult()1 scenario (1 passed)3 steps (3 passed)0m0.01s (9.13Mb) MyProject > run: BUILD FINISHED Total time: 1.1000 second

正如你所看到的,Behat 準備了一份很好的報告,說明我們的應用程序做了什么,結果是什么。下一次,當項目經理詢問你在測試中涉及到哪些場景時,你可以給他一個 Behat 輸出!

1、測試的結構

每個測試都包括:

對該場景的一些準備,用“Given”部分表示 “When”部分所涵蓋的一些動作 一些檢查被標記為“Then”部分

每個部分都可以包含多個與“And”關鍵字連接的步驟:

Scenario: Compare EUR and PLN Given nbp.pl comparator is available And I use nbp.pl comparator When I compare '100EUR' and '100PLN' And I save the result Then It should return some result And the first amount should be greater

2、上下文

Behat 允許你為你的測試定義多個上下文。這意味著你可以將步驟代碼分割成多個類,并從不同的角度去測試你的場景。

你可以例如:為 web 上下文編寫代碼,它將使用你的應用程序 HTTP 控制器運行你的測試步驟。你還可以創建“domain”上下文,它將只使用 PHP API 調用來運行你的業務邏輯。通過這種方式,你可以單獨地測試業務邏輯集成,從端到端應用程序測試。

關于如何在 Behat 建立許多上下文的更多信息,請參考http://behat.org/en/latest/userguide/context.html的文檔。

3、如何使用Behat 

正如一開始所提到的,你可以使用 Behat 進行集成測試。通常情況下,你的代碼依賴于一些外部的第三方系統。當我們在第 2 部分中編寫單元測試時,我們總是假設外部依賴關系像預期的那樣工作。使用 Behat,你可以編寫測試場景,它將自動運行你的代碼,并檢查它是否正確地使用真實場景的服務。

最重要的是,Behat 對于測試系統使用的復雜的端到端場景非常有用。它允許你隱藏在一個可讀性的名字后面運行測試步驟所需的復雜代碼,并編寫一個人人都能理解的場景。

總結

從以上的文章中,你已經學習了如何在你的項目中設置六個有用的工具:

PHing 用于運行你的構建 PHPCS 用于自動檢查代碼格式 PHPCPD 用于檢測重復代碼的 Phan 用于高級靜態代碼分析 PHPSpec 用于單元測試 Behat 用于端到端和集成測試

現在,你可以向 git 提交鉤子添加 ./bin/phing,并設置持續集成來運行每個提交的測試。

是不是突然之間,沒有什么能阻止你寫出高質量的 PHP 代碼!

以上就是淺談如何提高PHP代碼質量之端到端集成測試的詳細內容,更多關于如何提高PHP代碼質量之端到端集成測試的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲男女自偷自拍| 国产伊人久久| 91日韩在线| 国产成年精品| 精品久久久亚洲| 国产+成+人+亚洲欧洲在线| 精品视频黄色| 给我免费播放日韩视频| 成人国产精品一区二区免费麻豆| 精品中文字幕一区二区三区| 你懂的国产精品| 国产一区二区三区日韩精品| 精品美女久久| 久久天堂av| 捆绑调教日本一区二区三区| 日韩av免费| 视频一区中文| 丝袜美腿亚洲一区| 欧美亚洲福利| 国产一区二区三区不卡av | 一二三区精品| 啪啪亚洲精品| 成人在线超碰| 欧美日韩国产传媒| 在线视频免费在线观看一区二区| 亚洲一区二区三区在线免费| 欧美亚洲tv| 精品一区不卡| 青青久久av| 久久福利精品| 久久不见久久见国语| 久草免费在线视频| 五月婷婷六月综合| 91免费精品国偷自产在线在线| 精品一区视频| 亚洲激情欧美| 国产精品一区二区精品视频观看 | 久久精品国产www456c0m| 亚洲激情中文在线| 久久精品超碰| 久久人人88| 日韩中文字幕无砖| 久久久久久网| 男人的天堂久久精品| 国产精品对白久久久久粗| 91精品国产成人观看| 爽好久久久欧美精品| 久久久久久亚洲精品美女| 激情久久中文字幕| 日本欧美一区| 久久三级福利| 91精品国产一区二区在线观看| 香蕉成人av| 日本午夜精品久久久| 中文另类视频| 国产日产精品一区二区三区四区的观看方式| 色综合五月天| 亚洲精品成人一区| 久久婷婷av| 欧美一区久久| 精品一区亚洲| 欧美1区二区| 一区二区亚洲视频| 日本精品不卡| 国产精品毛片视频| 成人av二区| 老牛国内精品亚洲成av人片| 中文欧美日韩| 国产+成+人+亚洲欧洲在线| 亚洲资源在线| 久久久精品网| 老色鬼精品视频在线观看播放| 妖精视频成人观看www| 精品无人区麻豆乱码久久久| 天使萌一区二区三区免费观看| 久久久男人天堂| 国产欧美自拍| 亚洲伊人精品酒店| 欧美亚洲国产一区| 精品一区二区三区在线观看视频| 视频一区二区三区在线| av在线最新| 国产精品宾馆| 日韩精品免费视频一区二区三区| 亚洲欧美伊人| 国产精品伦理久久久久久| 人人精品久久| 麻豆成人在线| 999久久久91| 色欧美自拍视频| 国产精品mv在线观看| 日韩美女精品| 亚洲最大av| 99国产精品99久久久久久粉嫩| 中文字幕在线视频网站| 亚洲久久在线| 黄色日韩在线| 91精品啪在线观看国产18 | 精品一区亚洲| 香蕉视频亚洲一级| 国产成人免费精品| 国产伦精品一区二区三区在线播放| 久久av在线| 在线午夜精品| 不卡视频在线| av亚洲在线观看| 国产精品88久久久久久| 性感美女一区二区在线观看| 欧美黄色一区| 国产亚洲一卡2卡3卡4卡新区| 亚洲精品婷婷| 亚洲伊人精品酒店| 亚洲在线一区| 日韩一区二区免费看| 婷婷激情图片久久| 欧美 日韩 国产一区二区在线视频| 精品视频一区二区三区四区五区| 香蕉久久国产| 亚洲制服少妇| 丝袜美腿亚洲一区二区图片| 亚洲精品99| 欧美午夜不卡| 国产手机视频一区二区| 欧美不卡高清一区二区三区| 精品五月天堂| 国产自产自拍视频在线观看| 91亚洲国产高清| 91看片一区| 久久中文字幕av| 欧美a级片一区| 最新日韩欧美| 亚洲制服一区| 日韩av网站在线免费观看| 欧美亚洲tv| 久久精品72免费观看| 国产探花一区在线观看| 国产精品亚洲综合色区韩国| 国产美女视频一区二区| 国产精品亚洲四区在线观看| 欧美精品不卡| 国产乱码午夜在线视频| 国产美女高潮在线观看| 亚洲天堂一区二区| 欧美日韩国产一区精品一区| 石原莉奈在线亚洲二区| 日韩美女精品| 精品国产一区二| 中文字幕高清在线播放| 在线日韩中文| 天堂精品久久久久| 美女尤物国产一区| 亚洲精品在线影院| 在线亚洲自拍| 日本欧美在线| 日韩综合在线| 99国产一区| 国产日产精品_国产精品毛片 | 亚洲精品第一| 久久精品理论片| 欧美综合另类| 五月国产精品| 色一区二区三区四区| 91精品一区二区三区综合| 亚洲欧美日本日韩| 欧美一区影院| 日韩电影免费网址| 日韩一区精品视频| 国产福利资源一区| 欧美午夜精品一区二区三区电影| 日韩一级精品| 91精品国产自产在线丝袜啪| 成人日韩av| 亚洲一区国产一区| 国产精品一区二区三区四区在线观看| 日韩在线精品| 日韩欧美三区| 六月婷婷综合| 欧美日韩四区| 国产欧美日韩一区二区三区在线| 日韩精品欧美| 婷婷综合电影| 91看片一区| 欧美一区免费| 波多野结衣一区| 国产精品一国产精品| 亚州av乱码久久精品蜜桃| 欧美在线91| 极品裸体白嫩激情啪啪国产精品| 欧美亚洲免费| 欧美另类综合| 美女视频黄久久| 一区视频在线| 国产精品久久久一区二区| 欧美肉体xxxx裸体137大胆| 日本精品一区二区三区在线观看视频| 日韩深夜视频| 国产伦精品一区二区三区视频 | 综合欧美亚洲| 樱桃视频成人在线观看| 亚洲乱码一区|