午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 淺談如何提高PHP代碼質量之單元測試

淺談如何提高PHP代碼質量之單元測試

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

1、單元測試

通過實現單一責任原則(我們的代碼應該只關注功能的單個部分),我們將確保在測試期間,我們只會同時關注項目的一小部分

通過使用 Liskov 替換原則和依賴倒置原則,我們的代碼不會關心我們是否注入模擬依賴關系,只要它們實現了適當的接口

在單元測試中,我們確實希望用模擬對象替換所有依賴的服務,因此我們一次只測試一個類。但模擬是什么?它們是實現與其他對象相同的接口的對象,但它們的行為是受控的。例如,假設我們在創建一個價格比較服務,我們利用另一個服務來獲取當前的匯率。在測試我們的比較器時,我們可以使用一個模擬對象來為特定的貨幣返回特定的匯率,因此我們的測試既不依賴也不調用真正的服務。

2、應該使用哪個框架?

有幾個好的框架可以達到這個目的。最常見的可能是 PHPUnit。在我的工作中,我發現使用行為方法來編寫測試會帶來更好的結果,并使我更急切地編寫測試。對于我們的項目,我們選擇 phpspec。

安裝過程相當簡單 - 只需使用:

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

然后,如果你在本文的第一部分中配置了 PHing,那么你可以在 build.xml 中添加構建目標:

target name="phpspec">
	exec executable="bin/phpspec" passthru="true" checkreturn="true">
		arg line="run --format=pretty" />
	/exec>
/target>...
target name="run" depends="phpcs,phpcpd,phan,phpspec" />

然后,你必須為你想要測試的每個服務類創建一個測試類。讓 PHPSpec 非常容易使用的是模型創建。你只需使用嚴格的輸入,就可以將模擬對象聲明為測試函數的參數。PHPSpec 會自動為你創建模擬。讓我們看一下代碼示例:

//spec/Domain/PriceComparatorSpec.php
?php
namespace spec\Domain;
use Domain\Price;use Domain\PriceConverter;
use PhpSpec\ObjectBehavior;
class PriceComparatorSpec extends ObjectBehavior{
	public function let(PriceConverter $converter)    {       
		$this->beConstructedWith($converter);   
	} 
	public function it_should_return_equal()    {   
		$price1 = new Price(100, 'EUR');     
		$price2 = new Price(100, 'EUR');   
		$this->compare($price1, $price2)->shouldReturn(0);
	}    
	public function it_should_convert_first(PriceConverter $converter) {   
		$price1 = new Price(100, 'EUR');    
		$price2 = new Price(100, 'PLN');    
		$priceConverted = new Price(25, 'EUR');    
		$converter->convert($price2, 'EUR')->willReturn($priceConverted);  
		$this->compare($price1, $price2)->shouldReturn(1); 
	}
}

這里有三個函數:

  • let( ) - 它允許使用依賴來初始化服務
  • 兩個 it_* 函數實現測試。其中一種方法是使用模擬 $priceConverter 的方法實現 priceConverter 接口,該接口被注入到測試對象的創建中。

你可以看到創建模擬非常容易。你所需要做的就是將它定義為測試函數的參數,并通過指定在執行代碼時應該運行哪些函數來配置 mock。如果需要,你還可以設置返回值。

所有測試的方法都是從 $this 上下文中運行的,你可以使用與模擬相同的語法來輕松地檢查它們的結果。

3、如何設置測試?

Phpspec 有一個很好的文檔,但是我將嘗試向你展示一些在日常實踐中有用的基本用例。

構建測試對象

一般來說,設置測試對象的最簡單方法是調用 $this->beConstructedWith(…) 方法,該方法將所有應該傳遞給對象構造函數的 params 作為參數。

如果你的對象應該使用工廠方法來創建,那么你可以使用

this−>beConstructedThrough(this−>beConstructedThrough(methodName,$argumentsArray)方法。

在模擬中匹配運行時參數

你會發現 phpspec 使用一種非常類似于人類的語法來配置模擬。例如,如果你想要檢查在運行時是否有一個模擬方法 someMethod 與參數“desired value”被調用,你可以在測試中定義它,如下面的例子:

$mockObject->someMethod("desired value")->shouldBeCalled();

如果你想要測試代碼的行為,當一些 mock 的函數返回“some value”時,你可以通過調用來輕松地設置它:

$mockObject->someFunction("some input")->willReturn("some value");

有時我們并不真正關心傳遞給 mock 的確切參數。然后可以寫這段代碼:

use Prophecy\Argument\Token\AnyValueToken;
$mockObject->someFunction(new AnyValueToken())->willReturn(true);

有時你會關心一些參數,最好是寫一個檢查函數,它會告訴你是否正確地調用了一些方法,例如:

use Prophecy\Argument\Token\CallbackToken;
$checker = function (Message $message) use ($to, $text) {  
	return $message->to === $to  $message->text === $text;
};
$msgSender->send(new CallbackToken($messageChecker))->shouldBeCalled()

匹配運行時異常

。在某些情況下,異常是代碼接口的一部分。你希望它們在特定的場景被拋出。你可以通過編寫以下代碼來完成這項工作:

$this->shouldThrow(\DomainException::class)->during('execute', [$command, $responder]);

傳給 during() 的第一個參數是將要調用的方法的名稱,第二個參數是將傳遞給我們的方法的參數數組。

4、在哪里可以找到更多的例子?

在本文中,我們只介紹了一些基本的用例。請參考 phpspec 的文檔,以找到更多的示例,這些示例將使你的測試代碼變得漂亮!

代碼覆蓋率

PHPSpec 附帶了擴展子系統,它允許例如創建代碼覆蓋率報告。如果您想要檢查在測試中執行了多少代碼,它們是很有幫助的。

你可以通過以下來安裝這個擴展:

$ php composer.phar require --dev leanphp/phpspec-code-coverage

然后通過創建 phpspec 來啟用它。yml 文件內容:

1 extensions: LeanPHP\PhpSpec\CodeCoverage\CodeCoverageExtension: ~

默認情況下,這個擴展會使用 PHP 的 Xdebug 擴展生成代碼覆蓋率信息,但是 PHP 的本機調試器 - phpdbg 會更快速一些:

$ phpdbg -qrr phpspec run

現在,你可以在 build 中更改 phpspec 的構建目標。xml:

target name="phpspec">
	exec executable="phpdbg" passthru="true" checkreturn="true">
		arg line="-qrr bin/phpspec run --format=pretty" />
	/exec>
/target>...
target name="run" depends="phpcs,phpcpd,phan,phpspec" />

報告在覆蓋率 / 目錄中生成,作為漂亮的 HTML 頁面,可以瀏覽以檢查測試覆蓋率。

以上就是淺談如何提高PHP代碼質量之單元測試的詳細內容,更多關于如何提高PHP代碼質量之單元測試的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHPUnit 單元測試安裝與使用入門教程
  • ThinkPHP5與單元測試PHPUnit使用詳解
  • PHP單元測試配置與使用方法詳解
  • PHPUnit + Laravel單元測試常用技能
  • PHP使用phpunit進行單元測試示例
  • 使用PHPUnit進行單元測試并生成代碼覆蓋率報告的方法
  • PHPStorm中如何對nodejs項目進行單元測試詳解
  • PHP單元測試框架PHPUnit用法詳解
  • thinkPHP框架單元測試庫tpunit用法示例

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

巨人網絡通訊聲明:本文標題《淺談如何提高PHP代碼質量之單元測試》,本文關鍵詞  淺談,如何,提高,PHP,代碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談如何提高PHP代碼質量之單元測試》相關的同類信息!
  • 本頁收集關于淺談如何提高PHP代碼質量之單元測試的相關信息資訊供網民參考!
  • 推薦文章
    亚洲一区二区3| 国产女同一区二区| 国产精品一级视频| 亚洲国产精品成人精品| 国产 中文 字幕 日韩 在线| 欧美日韩国产不卡| 性生交大片免费全黄| 欧美国产综合视频| 日韩电影中文字幕在线观看| 中文字幕av一区二区三区免费看 | 中文av一区二区| 久久66热偷产精品| 性欧美丰满熟妇xxxx性久久久| 8050国产精品久久久久久| 26uuu亚洲综合色| 欧美三级午夜理伦| 无码播放一区二区三区| 91香蕉视频mp4| 欧美色图色综合| 狠狠躁夜夜躁久久躁别揉| 国产成人在线免费视频| 一级黄色在线播放| 国产精品美女在线观看| 欧美大片一区二区| 日韩欧亚中文在线| 亚洲精品久久久久中文字幕欢迎你 | 中文字幕日本不卡| 综合久久久久久久| 精品在线你懂的| 一级性生活大片| 成人污网站在线观看| 午夜美女久久久久爽久久| 国产亚洲精久久久久久| 一级片久久久久| 成人免费观看在线| 欧美 丝袜 自拍 制服 另类| 97精品国产97久久久久久免费| 亚洲综合一二区| 日韩综合在线视频| 亚洲一区bb| 国产精品成人一区| 亚洲欧洲一区二区三区久久| 欧美日韩电影在线观看| 91精品久久久久久久久久入口| 91一区二区三区| 国产在线精品日韩| 国产99在线|中文| 中文字幕在线观看亚洲| 亚洲色图欧洲色图| 成人晚上爱看视频| 国产特黄一级片| 国产主播中文字幕| 欧美综合第一页| 国产成人中文字幕| 99视频在线| 午夜激情综合网| 日韩高清不卡在线| 亚洲av无码乱码国产精品久久| 亚洲第一页在线视频| 91精品在线观| 国产精品亚洲激情| 亚洲一卡二卡区| 一起草在线视频| 国产特级黄色片| 五月天丁香视频| 国产成人午夜精品影院观看视频| 国产乱叫456在线| 国产人妻黑人一区二区三区| 亚洲 激情 在线| 国产嫩草在线观看| 97超级在线观看免费高清完整版电视剧| 欧美日韩大陆在线| 欧美日韩精品欧美日韩精品| 亚洲国产日韩欧美在线动漫| 精品视频一区 二区 三区| 秋霞午夜鲁丝一区二区老狼| av电影一区二区三区| 欧美精品成人一区二区三区四区| www.精品在线| 欧美日韩高清区| 久久久久久久久久久久av| 久久免费观看视频| 久久久女女女女999久久| 日韩一区二区中文字幕| 中文字幕一区二区三区在线不卡| 久久99久久精品欧美| 一级黄色短视频| 久久国产精品国语对白| 自拍偷拍第9页| 精品久久久久久久久久久久久久久久久久| 手机看片福利永久国产日韩| 欧美亚洲爱爱另类综合| 精品人妻人人做人人爽| 爱福利视频一区二区| 久久视频这里有精品| 国产精品久久久久久久美男| 一本色道综合亚洲| eeuss中文字幕| 美女黄色片网站| 婷婷综合激情网| 侵犯稚嫩小箩莉h文系列小说| 污视频网站观看| 欧美自拍资源在线| 国产精品视频男人的天堂| 一区二区在线视频播放| 精品欧美激情精品一区| 久久综合久久久久88| 国精产品一区一区三区mba视频| 国产麻豆一精品一av一免费| 我要看黄色一级片| 李宗瑞91在线正在播放| 日韩av在线播放观看| 人妻丰满熟妇av无码区hd| 亚洲国产综合网| 久久性色av| 美腿丝袜亚洲综合| 国产又爽又黄的视频| 久草视频国产在线| 在线观看91久久久久久| 亚洲国产成人私人影院tom| 日日噜噜夜夜狠狠久久丁香五月| 国产97在线亚洲| 2020久久国产精品| 国产一区二区黄| 欧美日韩一级大片网址| 性欧美大战久久久久久久久| 国产精品私房写真福利视频| 精品高清一区二区三区| 亚洲国产91色在线| 成人国产精品av| 精品人妻大屁股白浆无码| 欧美日韩在线成人| 裸体裸乳免费看| 成年人观看网站| 污污的视频免费观看| 久久久精品三级| 日韩一级免费片| 交换做爰国语对白| 国产性xxxx18免费观看视频| 亚洲激情电影中文字幕| 午夜免费久久看| 欧美性猛交xxxxx少妇| 日韩中文字幕在线视频观看| 日本wwwxx| 人妻精品久久久久中文字幕69| 高潮一区二区三区| 精品久久久久av| 亚洲人成无码网站久久99热国产| 国产午夜无码视频在线观看| 精品人妻午夜一区二区三区四区 | 人人妻人人澡人人爽久久av| 久久毛片高清国产| 欧美精品xxxxbbbb| 97视频免费在线观看| 7777精品伊人久久久大香线蕉 | 97视频免费在线观看| 91成人免费视频| 国产噜噜噜噜噜久久久久久久久| 成人免费直播live| 免费一区二区三区| 涩涩涩999| 免费看a级黄色片| 日韩一级片播放| free性中国hd国语露脸| 日本免费www| 国产欧美一区二区三区在线看蜜臂| 国产wwwxxx| 老司机久久99久久精品播放免费| 色香蕉在线视频| 亚洲AV无码精品国产| 人人妻人人玩人人澡人人爽| 日韩精品亚洲一区二区三区免费| 亚洲影院在线播放| 国产一区二区视频免费| 91九色在线观看视频| 中国老女人av| 污网站免费观看| 精品无码久久久久久久| av 一区二区三区| 国产曰批免费观看久久久| 久久成人羞羞网站| 久久午夜电影网| 91社区在线播放| 亚洲综合在线视频| 国产精品色眯眯| 精品无人码麻豆乱码1区2区| 成人综合婷婷国产精品久久蜜臀 | 国产精品私人自拍| 亚洲一区二区美女| 亚洲码国产岛国毛片在线| 91官网在线免费观看| 亚洲成人激情在线| 亚洲一区二区综合| 色偷偷成人一区二区三区91| 成人短视频下载| 国产在线精品免费av| 91精品国产综合久久蜜臀| 久久久免费电影| 免费成人av网站| 久草免费资源站| 丰满少妇xoxoxo视频| 久久99国产精品尤物| 欧美日韩国产乱码电影| 99中文字幕| 天海翼在线视频| 亚洲av色香蕉一区二区三区| 国产精品国产精品国产专区不片 | 水蜜桃久久夜色精品一区的特点 | 日韩一区二区久久久| 久久综合久久色| 日韩一区二区三区四区视频| 在线观看亚洲国产| 国模无码一区二区三区| 国产成人鲁色资源国产91色综| 成年人午夜视频| 国产第100页| 亚洲黄色片在线观看| 国模私拍一区二区三区| 成人午夜视频免费观看| 麻豆天美蜜桃91| 99精品视频在线播放观看| 91精品国产欧美一区二区| 日韩欧美视频一区| 亚洲成色www.777999| 精品一区二区在线播放| 91九色综合久久| 国产一区不卡在线| 欧美一区二区三区在线播放| 国产激情一区二区三区| 91亚洲va在线va天堂va国 | 国产成人精品在线观看| 熟妇高潮一区二区| 中文字幕在线一区| 91天堂在线视频| 手机在线成人免费视频| 91精品国产高潮对白| 国产成人精品a视频| 国产精品乱码人人做人人爱| 不卡视频免费播放| 国产日本欧洲亚洲| 91精品国产91久久久久久吃药| 粉色视频免费看| 亚洲精品喷潮一区二区三区| 黑人精品xxx一区| 精品欧美日韩在线| 美女的奶胸大爽爽大片| 一区二区三区高清在线| 欧美伊久线香蕉线新在线| 亚洲成人av免费在线观看| 亚洲欧洲中文日韩久久av乱码| 亚州精品一二三区| 亚洲一二三四区不卡| 国产主播欧美精品| 国产高清视频免费观看| 久久视频精品在线| 免费看一级一片| 亚洲av色香蕉一区二区三区| 91久久国产综合久久蜜月精品| 日韩av电影免费观看高清完整版| 国产精品日韩二区| www香蕉视频| 久久久精品视频成人| 欧美 日韩 国产 高清| 国产精品入口麻豆| 成人国产电影网| 国产欧美一区二区三区鸳鸯浴 | 免费在线观看污污视频| 丰满人妻妇伦又伦精品国产| 伊人久久男人天堂| 伊人五月天婷婷| 国产视频一区二区在线| 国产精品嫩草影院一区二区| 一区二区视频免费| 欧美另类一区| 精品久久久久一区二区国产| 日本在线视频免费| 91中文精品字幕在线视频| 欧美国产丝袜视频| 国产肉体ⅹxxx137大胆| 97久久精品人人做人人爽50路| 国产欧美日韩久久| 天天夜碰日日摸日日澡性色av| 亚洲最大成人av| 亚洲跨种族黑人xxx| 国产永久免费网站| 丁香一区二区三区| 亚洲sss综合天堂久久| 国产黄色美女视频| 亚洲成人av在线| 国产又大又黄又猛| 99久久精品国产麻豆演员表| 国产在线98福利播放视频| 日日骚av一区二区| 亚洲情综合五月天| 久久丫精品国产亚洲av不卡| 亚洲成人www| 日韩少妇内射免费播放18禁裸乳| www.亚洲人| 精品综合久久久| 天堂8在线视频| 主播福利视频一区| 亚洲第一黄色网址| 色婷婷久久一区二区三区麻豆| 日韩久久久久久久| 国产一区二区三区免费播放| 亚洲www在线观看| 国产一级做a爰片在线看免费| 亚洲美女av在线播放| 泷泽萝拉在线播放| 欧美视频中文字幕| 亚洲女则毛耸耸bbw| 色哟哟一区二区在线观看| 国产又黄又猛视频| 成人免费视频在线观看| 久久综合色视频| 欧美国产日产图区| 男人草女人视频| 欧美激情资源网| 成人午夜免费剧场| 久久久青草青青国产亚洲免观| 日韩中文字幕一区二区| 波多野结衣91| 国产免费xxx| 亚洲国产日日夜夜| 妖精视频在线观看| 五月婷婷综合网| 欧美做受高潮中文字幕| 91福利在线观看| 国产精品入口麻豆| 亚洲第一中文字幕| 国产情侣自拍av| 九九精品在线视频| 国产91免费看| 国产精品啪视频| 懂色av噜噜一区二区三区av| 屁屁影院ccyy国产第一页| 亚洲图片自拍偷拍| 亚洲自拍偷拍一区二区 | 精品国产免费av| 在线观看视频一区| 99精品欧美一区二区| 一区二区福利视频| 国产精品视频在线观看免费| 91精品国产自产在线老师啪| 国产在线精品一区二区| 欧美成熟毛茸茸复古| 亚洲黄一区二区三区| 亚洲精品激情视频| 国产一区二区美女视频| 国产精品女人久久久| 久久久综合香蕉尹人综合网| 国产精品色哟哟网站| 欧美一级视频在线| 亚洲激情中文字幕| 午夜精品久久久久久久99热黄桃| 欧美日韩最好看的视频| 亚洲国产视频a| av片在线免费看| 999热视频在线观看| 亚洲三级在线播放| 99国产精品免费视频| 欧美猛少妇色xxxxx| 国产成人aaaa| 999热精品视频| 久久国产精彩视频| 久久99精品久久久久久 | 国产aⅴ综合色| 波多野结衣办公室双飞| 九九热在线精品视频| 国产iv一区二区三区| 在线观看免费的av| 久久精品青青大伊人av| 韩国视频一区二区| 亚欧激情乱码久久久久久久久| 91精品久久久久久蜜臀| 懂色av成人一区二区三区| 欧美狂野激情性xxxx在线观| 亚洲精品电影网站| 视频一区中文字幕| 一起草最新网址| 欧美野外猛男的大粗鳮| 亚洲天堂福利av| 区一区二在线观看| 色乱码一区二区三区熟女| 精品欧美久久久| 激情综合五月婷婷| 青青草自拍偷拍| 欧美亚洲爱爱另类综合| 亚洲精品一区二区三区蜜桃下载| 国产一区在线观看麻豆| 国产精品密蕾丝袜| 精品国产一区二区三区免费| 日韩一区二区免费电影| 蜜臀av国产精品久久久久| 亚洲成人网在线播放| 久久久久久久久一区| 欧美va亚洲va在线观看蝴蝶网| 成人一级片在线观看| 丰满少妇高潮久久三区| 久久国产精品免费观看| 欧美另类在线播放| 欧美日韩国产精品| 丰满熟妇人妻中文字幕| 中出视频在线观看| 污视频在线免费观看一区二区三区| 亚洲男人天堂九九视频| 中文一区二区在线观看| www.五月天激情| 黄色一级片免费在线观看| 啊啊啊国产视频|