)
測(cè)試開發(fā)工具【免費(fèi)下載鏈接】mockeryMockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL).項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/mockery點(diǎn)擊查看免費(fèi)下載導(dǎo)讀本文是 Mockery 官方文檔 docs/getting_started/installation.rst 的完整講解覆蓋兩種主流安裝方式通過 Composer 將其聲明為開發(fā)依賴或直接克隆 Git 倉庫使用開發(fā)版本。讀完本文你將掌握composer require --dev mockery/mockery與dev-master版本約束的正確用法、生產(chǎn)環(huán)境--no-dev的語義以及安裝完成后如何與 PHPUnit 無縫集成快速搭建可用的測(cè)試替身test double環(huán)境。為什么選擇 Composer 安裝 MockeryMockery 是一個(gè)面向 PHP 單元測(cè)試的 mock 對(duì)象框架其核心目標(biāo)是提供一套簡(jiǎn)潔、可讀性強(qiáng)的 DSL 來描述對(duì)象操作與交互可配合 PHPUnit、PHPSpec 或任何其他測(cè)試框架使用參見 docs/index.rst 與根目錄 README.md。作為測(cè)試專用的開發(fā)依賴它不應(yīng)該被安裝到生產(chǎn)環(huán)境——這正是官方文檔把安裝方式設(shè)計(jì)為require-dev的根本原因。在當(dāng)前倉庫的 composer.json 中可以印證這一點(diǎn)運(yùn)行時(shí)依賴require僅兩項(xiàng)php 7.3與hamcrest/hamcrest-php: ^2.0 || ^3.0Hamcrest 用于參數(shù)匹配器開發(fā)依賴require-dev則包含phpunit/phpunit與代碼規(guī)范工具symplify/easy-coding-standard同時(shí)聲明了conflict: phpunit/phpunit 8.0意味著舊版 PHPUnit 無法與當(dāng)前 Mockery 共存自動(dòng)加載autoload采用 PSR-4將Mockery\命名空間映射到library/Mockery目錄并通過files字段加載 library/helpers.php 與 library/Mockery.php后者是Mockery::mock()、Mockery::spy()等核心入口所在。由此可見Mockery 本體依賴極輕把它放進(jìn)require-dev不會(huì)污染生產(chǎn)依賴樹。方式一通過 Composer 安裝推薦前置準(zhǔn)備安裝 ComposerComposer 是 PHP 的依賴管理工具。如果你的項(xiàng)目還沒有 Composer需要先按照 Composer 官方下載頁的指引完成安裝。安裝完成后建議在你的項(xiàng)目根目錄即存在composer.json的項(xiàng)目目錄中執(zhí)行后續(xù)命令。第一步在 composer.json 中聲明開發(fā)依賴官方文檔給出的建議寫法是在項(xiàng)目的composer.json中聲明require-dev{ require-dev: { mockery/mockery: dev-master } }關(guān)于版本約束官方文檔特別強(qiáng)調(diào)了兩點(diǎn)dev-master對(duì)應(yīng) Mockery Git 倉庫的 master 分支開發(fā)版本。官方雖然盡力保證 master 分支的穩(wěn)定性但開發(fā)版本畢竟不是正式發(fā)布行為可能變化stable標(biāo)簽如果你更希望使用當(dāng)前穩(wěn)定版本標(biāo)簽可以改用穩(wěn)定版約束例如^1.6或直接引用發(fā)布標(biāo)簽避免追蹤未發(fā)布代碼帶來的不確定性。README 與 Packagist 上的常規(guī)做法是直接執(zhí)行composer require --dev mockery/mockeryComposer 會(huì)自動(dòng)解析出當(dāng)前最新的穩(wěn)定版本。第二步執(zhí)行安裝聲明好依賴后在項(xiàng)目根目錄運(yùn)行php composer.phar update該命令會(huì)根據(jù)composer.json解析并下載依賴同時(shí)更新composer.lock鎖定具體版本。由于 Mockery 被聲明為開發(fā)依賴因此在生產(chǎn)環(huán)境執(zhí)行php composer.phar update --no-dev時(shí)Mockery不會(huì)被安裝——這正是把測(cè)試框架放進(jìn)require-dev的核心收益生產(chǎn)部署不會(huì)攜帶任何測(cè)試專用代碼。更快捷的方式命令行一行搞定如果不想手工編輯composer.json可以直接用 Composer 的命令行接口完成聲明 安裝php composer.phar require --dev mockery/mockery這條命令會(huì)自動(dòng)把mockery/mockery寫入composer.json的require-dev段并立即安裝效果與手動(dòng)編輯文件后執(zhí)行update等價(jià)是日常開發(fā)中最常用的方式。README 中給出的精簡(jiǎn)版composer require --dev mockery/mockery與此相同在已全局安裝 composer 可執(zhí)行文件的環(huán)境下使用。方式二通過 Git 克隆安裝開發(fā)版本Mockery 的 Git 倉庫在其 master 分支維護(hù)開發(fā)版本。如果希望跟蹤最新代碼例如貢獻(xiàn)代碼、體驗(yàn)未發(fā)布特性可以直接克隆倉庫到本地或者如官方文檔所示在composer.json中將版本約束引用為dev-master——即第一節(jié)示例的做法Composer 會(huì)直接從這個(gè)分支拉取源碼。{ require-dev: { mockery/mockery: dev-master } }需要說明的是使用dev-master意味著你拿到的代碼不是經(jīng)過發(fā)布流程的穩(wěn)定版本官方雖盡力保持 master 穩(wěn)定但生產(chǎn)項(xiàng)目仍建議鎖定穩(wěn)定發(fā)布標(biāo)簽。當(dāng)前倉庫中還可以看到多份面向不同 PHPUnit 大版本的測(cè)試配置如 phpunit-9.6.xml.dist、phpunit-11.5.xml.dist、phpunit-12.5.xml.dist 等從側(cè)面反映該分支持續(xù)兼容多個(gè) PHPUnit 版本的開發(fā)狀態(tài)。安裝完成后驗(yàn)證與 PHPUnit 集成快速驗(yàn)證安裝是否成功安裝完成后可以通過以下方式快速驗(yàn)證 Mockery 是否可用require vendor/autoload.php; $mock \Mockery::mock(MyClass); $mock-shouldReceive(foo)-once()-andReturn(bar); echo $mock-foo(); // 輸出 bar如果輸出正常且沒有類加載錯(cuò)誤說明 PSR-4 自動(dòng)加載配置Mockery\→library/Mockery已生效。與 PHPUnit 集成兩種官方推薦方式Mockery 與 PHPUnit 的集成方式在 docs/getting_started/quick_reference.rst 中有詳細(xì)示例安裝后即可直接使用無需額外下載組件方式 A繼承MockeryTestCaseuse \Mockery\Adapter\Phpunit\MockeryTestCase; class MyTest extends MockeryTestCase { }方式 B使用MockeryPHPUnitIntegrationtrait適用于已有自定義基類的測(cè)試use \PHPUnit\Framework\TestCase; use \Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; class MyTest extends TestCase { use MockeryPHPUnitIntegration; }這兩種方式都會(huì)在測(cè)試生命周期內(nèi)自動(dòng)調(diào)用\Mockery::close()免去手工維護(hù)tearDown()的麻煩。相關(guān)實(shí)現(xiàn)位于 library/Mockery/Adapter/Phpunit/MockeryTestCase.php 及同目錄的MockeryPHPUnitIntegration.php詳細(xì)說明見 docs/reference/phpunit_integration.rst。歷史提示在 Mockery 0.9.x 及更早版本中PHPUnit 集成是通過 listener 機(jī)制實(shí)現(xiàn)的從 1.0.0 起改為上述 trait/基類方式參見 docs/getting_started/upgrading.rst。首個(gè)測(cè)試示例安裝與集成完成后可以參考 docs/getting_started/simple_example.rst 的示例快速上手。例如創(chuàng)建一個(gè) mock 服務(wù)并約定其readTemp方法被調(diào)用 3 次、依次返回 10、12、14use \Mockery; class TemperatureTest extends \PHPUnit\Framework\TestCase { public function tearDown() { Mockery::close(); } public function testGetsAverageTemperatureFromThreeServiceReadings() { $service Mockery::mock(service); $service-shouldReceive(readTemp) -times(3) -andReturn(10, 12, 14); $temperature new Temperature($service); $this-assertEquals(12, $temperature-average()); } }版本與運(yùn)行環(huán)境注意事項(xiàng)在規(guī)劃安裝版本時(shí)需要注意以下幾點(diǎn)依據(jù)倉庫內(nèi)文檔與配置PHP 版本要求當(dāng)前倉庫的 composer.json 聲明php 7.3歷史版本方面Mockery 1.0.0 要求 PHP 5.6 起而 1.3 是最后一個(gè)支持 HHVM 3 與 PHP 5 的版本HHVM 4 不再受支持見 README.md。PHPUnit 兼容性當(dāng)前版本要求 PHPUnit 8.0conflict聲明為8.0倉庫同時(shí)維護(hù)了 9.6 / 10.5 / 11.5 / 12.5 / 13.3 等多個(gè)版本線的測(cè)試配置說明其覆蓋了較寬的 PHPUnit 版本范圍。語義化版本策略Mockery 團(tuán)隊(duì)遵循語義化版本Semantic Versioning但其部分內(nèi)部實(shí)現(xiàn)被視為私有 API隨時(shí)可能變更——僅因?yàn)槟硞€(gè)類不是 final 或方法未標(biāo)記 private并不代表它屬于版本約定中保證的公共 API。倉庫遷移提醒Mockery 曾從padraic/mockery遷移到mockery/mockery。如果本地 Git 倉庫仍指向舊地址可通過git remote -v查看并更新遠(yuǎn)端地址舊地址的重定向會(huì)在一段時(shí)間內(nèi)透明生效。小結(jié)安裝 Mockery 的核心要點(diǎn)可歸納為推薦方式php composer.phar require --dev mockery/mockery或手動(dòng)在composer.json的require-dev聲明后執(zhí)行php composer.phar update生產(chǎn)隔離--no-dev安裝不會(huì)攜帶 Mockery確保測(cè)試代碼不進(jìn)入生產(chǎn)環(huán)境嘗鮮開發(fā)版在require-dev中使用dev-master引用 master 分支穩(wěn)定項(xiàng)目則使用stable或具體版本標(biāo)簽集成銜接安裝后通過繼承MockeryTestCase或混入MockeryPHPUnitIntegrationtrait 即可獲得自動(dòng)清理Mockery::close()能力隨后可參考 docs/getting_started/quick_reference.rst 與 docs/getting_started/simple_example.rst 快速上手測(cè)試編寫。贊分享測(cè)試開發(fā)工具【免費(fèi)下載鏈接】mockeryMockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL).項(xiàng)目地址https://gitcode.com/gh_mirrors/mo/mockery點(diǎn)擊查看免費(fèi)下載相關(guān)推薦從灰暗到驚艷用foobox重新定義你的foobar2000音樂體驗(yàn)從灰暗到驚艷用foobox重新定義你的foobar2000音樂體驗(yàn) 當(dāng)我第一次打開foobar2000時(shí)那灰暗單調(diào)的界面讓我有些失望——如此強(qiáng)大的音頻播放器桌面應(yīng)用音視頻PHP-CS-Fixer 安裝與升級(jí)全指南Composer、Docker、PHIVE 與 CI 集成PHP CS Fixer 安裝與升級(jí)全指南Composer、Docker、PHIVE 與 CI 集成 PHP CS Fixer 是一款自動(dòng)修復(fù) PHP 編碼規(guī)開發(fā)工具代碼質(zhì)量靜態(tài)分析Lint格式化**PHPUnit單元測(cè)試框架安裝與使用指南**PHPUnit單元測(cè)試框架安裝與使用指南 目錄結(jié)構(gòu)及介紹 當(dāng)您克隆或下載 PHPUnit 庫時(shí), 您將看到以下主要的文件和目錄: src : 此目錄包含PHPU測(cè)試質(zhì)量保障開發(fā)工具上一篇Unity場(chǎng)景管理終極指南異步加載與切換優(yōu)化技巧下一篇Tye項(xiàng)目初始化終極指南5分鐘快速創(chuàng)建微服務(wù)架構(gòu)創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考