亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 淺談如何提高PHP代碼質量之端到端集成測試

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

熱門標簽:溫州外呼系統招商 天津電銷外呼系統違法嗎 銀行信貸電話機器人 上海400客服電話怎么申請 手機外呼系統什么原理 凱立德地鐵站地圖標注 滄州電銷外呼系統價格 400電話個人能不能辦理 合肥ai電銷機器人費用

概述

在這里,我們可以使用為行為驅動開發構建的工具——官方 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 Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
class FeatureContext implements SnippetAcceptingContext{
	/** * Initializes context. */ public function __construct() { }
}

然后你可以執行:

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

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

// features/bootstrap/FeatureContext.php
?php
use Behat\Behat\Context\Context;
use Domain\Price;use Domain\PriceComparator;
use Infrastructure\NBPPriceConverter;
/*** 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代碼質量之端到端集成測試的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 詳解Yaf框架PHPUnit集成測試方法
  • PHP單元測試配置與使用方法詳解
  • PHPUnit + Laravel單元測試常用技能
  • PHP使用phpunit進行單元測試示例
  • php使用yield對性能提升的測試實例分析
  • 高質量PHP代碼的50個實用技巧必備(下)
  • 高質量PHP代碼的50個實用技巧必備(上)
  • 很讓人受教的 提高php代碼質量36計
  • 寫出高質量的PHP程序

標簽:金華 酒泉 七臺河 赤峰 溫州 洛陽 白城 怒江

巨人網絡通訊聲明:本文標題《淺談如何提高PHP代碼質量之端到端集成測試》,本文關鍵詞  淺談,如何,提高,PHP,代碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談如何提高PHP代碼質量之端到端集成測試》相關的同類信息!
  • 本頁收集關于淺談如何提高PHP代碼質量之端到端集成測試的相關信息資訊供網民參考!
  • 推薦文章
    91麻豆国产级在线| 国产亚洲精品成人a在线| 99久久精品国产国产毛片| 欧美另类videosbestsex久久| 精品国产一区二区三区国产馆| 91麻豆国产级在线| 免费国产在线观看| 精品国产香蕉伊思人在线又爽又黄| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人av在线播放| 一级女性全黄久久生活片| 日韩在线观看视频网站| 九九精品在线| 国产高清视频免费观看| 亚洲精品中文字幕久久久久久| 精品视频一区二区三区| 国产成人精品综合久久久| 欧美大片一区| 成人高清视频免费观看| 91麻豆精品国产综合久久久| 黄色免费三级| 色综合久久天天综合观看| 精品视频在线观看视频免费视频| 精品久久久久久综合网 | 国产亚洲精品aaa大片| a级精品九九九大片免费看| 国产麻豆精品视频| 韩国三级视频网站| 欧美大片a一级毛片视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 91麻豆国产福利精品| 国产一区二区精品久久| 国产一区精品| 99久久精品国产片| 国产a免费观看| 成人免费网站视频ww| 麻豆系列国产剧在线观看| 欧美a级大片| 深夜做爰性大片中文| 国产美女在线观看| 免费国产在线观看| 免费的黄视频| 亚洲爆爽| 欧美国产日韩一区二区三区| 精品久久久久久综合网| 欧美另类videosbestsex久久| 国产不卡高清在线观看视频| 国产高清在线精品一区二区| 国产不卡在线播放| 青青久在线视频| 天天做人人爱夜夜爽2020| 午夜在线影院| 二级片在线观看| 精品国产一区二区三区久久久狼| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 一级毛片视频免费| 久久久成人影院| 日本免费乱理伦片在线观看2018| 日韩中文字幕在线观看视频| 日本免费乱理伦片在线观看2018| 亚洲精品影院| a级精品九九九大片免费看| 成人影视在线播放| 国产麻豆精品hdvideoss| 韩国毛片基地| 国产一区二区精品久久91| 国产伦精品一区二区三区无广告| 999久久66久6只有精品| 99色视频在线| 日韩中文字幕在线播放| 欧美1卡一卡二卡三新区| 美女免费精品视频在线观看| 国产精品免费久久| 色综合久久天天综合观看| 国产成人欧美一区二区三区的| 国产a网| 精品毛片视频| 成人免费观看网欧美片| 久久精品免视看国产成人2021| 黄色免费网站在线| 国产一区二区精品在线观看| 日韩av成人| 一级片片| 国产韩国精品一区二区三区| 日本在线www| 你懂的在线观看视频| 国产一区二区精品久| 精品国产一区二区三区精东影业| a级精品九九九大片免费看| 国产激情视频在线观看| 成人影院一区二区三区| 国产一区二区精品| 你懂的福利视频| 可以在线看黄的网站| 亚洲 欧美 91| 国产不卡福利| 欧美电影免费看大全| 国产精品免费久久| 九九精品在线| 精品视频在线看| 欧美激情中文字幕一区二区| 九九干| 国产欧美精品| 精品国产一区二区三区久| 欧美爱色| 高清一级片| 亚欧成人毛片一区二区三区四区| 国产欧美精品| 日韩在线观看免费| 国产高清视频免费| 97视频免费在线| 日日日夜夜操| 国产一级生活片| 国产视频久久久| 夜夜操天天爽| 国产国语在线播放视频| 精品毛片视频| 精品在线免费播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 高清一级毛片一本到免费观看| 亚久久伊人精品青青草原2020| 成人高清视频在线观看| 国产一区二区精品| 成人免费一级纶理片| 麻豆网站在线看| 成人免费观看网欧美片| 国产视频一区二区在线播放| 沈樵在线观看福利| 九九精品久久| 国产视频在线免费观看| 日本免费区| 国产成人精品在线| 在线观看成人网 | 日韩免费在线视频| 日日日夜夜操| 可以免费在线看黄的网站| 成人a级高清视频在线观看| 日韩专区亚洲综合久久| 欧美国产日韩一区二区三区| 精品国产三级a∨在线观看| 日本在线www| 高清一级片| 精品国产一区二区三区久久久蜜臀| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲天堂在线播放| 久久久久久久免费视频| 韩国三级视频在线观看| 国产成人精品影视| 成人免费观看网欧美片| 天天做人人爱夜夜爽2020毛片| 天天色成人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 青草国产在线| 可以免费在线看黄的网站| 九九九在线视频| 超级乱淫伦动漫| 97视频免费在线| 日本在线www| 可以免费看毛片的网站| 国产伦久视频免费观看 视频 | 日韩av东京社区男人的天堂| 日韩一级黄色片| 黄色免费三级| 国产一区二区精品尤物| 欧美激情一区二区三区在线播放| 日韩av东京社区男人的天堂| 国产网站麻豆精品视频| 精品视频在线观看一区二区| 九九精品久久久久久久久| 韩国三级香港三级日本三级| 欧美日本二区| 亚洲精品久久久中文字| 久久精品免视看国产明星| 韩国毛片 免费| 一级毛片视频在线观看| 尤物视频网站在线| 亚洲女人国产香蕉久久精品| 精品国产香蕉伊思人在线又爽又黄| 久久久久久久免费视频| 日本在线www| 韩国三级视频在线观看| 成人免费观看男女羞羞视频 | 999久久狠狠免费精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 色综合久久天天综线观看| 国产视频在线免费观看| 美女免费毛片| 国产综合成人观看在线| 欧美一区二区三区在线观看| 久草免费在线视频| 日本特黄特色aa大片免费| 午夜欧美福利| 黄视频网站在线看| 欧美a免费| 国产极品精频在线观看| 成人av在线播放| 国产成人精品综合在线| 国产视频一区二区三区四区| 亚洲不卡一区二区三区在线 | 你懂的日韩|