十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Laravel 示例项目中的 Mockery 安装实战:Composer / PEAR / Git 三种方式与 Hamcrest 依赖详解

Laravel 示例项目中的 Mockery 安装实战:Composer / PEAR / Git 三种方式与 Hamcrest 依赖详解 示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载Mockery 是 PHP 生态中简洁而灵活的 mock 对象框架用于在 PHPUnit、PHPSpec 等测试框架中构建测试替身。本文以官方文档 installation.rst 为骨架结合本仓库中 Laravel 示例项目的真实配置系统讲解 Composer、PEAR、Git 三种安装方式、版本约束选择与 Hamcrest 依赖关系。读完本文你将能在自己的 Laravel / PHP 项目中正确安装 Mockery并理解其在测试栈中的实际作用。Mockery 在当前仓库中的定位本仓库的 samples/development-frameworks/laravel 是一个基于 Laravel 5.1 的 ToDo 示例应用其 composer.json 中require声明了laravel/framework: 5.1.*。Mockery 以开发依赖的形式出现在该项目的require-dev段require-dev: { fzaninotto/faker: ~1.4, mockery/mockery: 0.9.*, phpunit/phpunit: ~4.0, phpspec/phpspec: ~2.1 }可以看到项目锁定的 Mockery 版本约束为0.9.*这与 vendor 内 Mockery 源码的 composer.json 中dev-master别名0.9.x-dev的设定一致说明该示例项目使用的正是 0.9 系列版本。在require-dev中声明依赖意味着Mockery 只服务于开发与测试环节不会进入生产环境部署——这正是官方安装文档强调的development dependency语义。项目的测试代码位于 tests 目录TestCase.php、HomeTest.php、SignInTest.php、TodoTest.php配合 PHPUnit 与 Laravel 内置的 Testing API 使用。方式一通过 Composer 安装推荐官方文档将 Composer 作为首选安装方式。整个流程分三步第 1 步为项目安装 Composer。这是 PHP 项目的依赖管理基础工具安装完成后即可在项目目录下使用php composer.phar或全局composer命令。第 2 步在composer.json中声明 Mockery 为开发依赖。官方文档给出的建议配置如下{ require-dev: { mockery/mockery: dev-master } }这里存在一个关键的版本选择问题。dev-master指向 Mockery 源码仓库的 master 分支即开发版本。官方文档明确提示虽然项目会尽力保持 master 分支稳定但如果希望使用当前稳定版本应改用stable标签。实践中更常见的做法是指定明确的版本区间例如本仓库 Laravel 示例项目使用的mockery/mockery: 0.9.*它会解析到 0.9 系列的最新稳定版。第 3 步执行依赖更新命令。php composer.phar updateupdate会依据composer.json的约束解析并安装依赖同时生成composer.lock锁定精确版本保证团队与 CI 环境的一致性。官方文档特别提醒由于 Mockery 被声明在require-dev段生产环境执行php composer.phar update --no-dev时它不会被安装从而避免把测试依赖带入线上。安装完成后vendor 目录中的 mockery/mockery 便包含了完整的库结构library/Mockery下的Container.php、Mock.php、Expectation.php、MockInterface.php等核心类文件以及docs、examples、tests等子目录library/通过 PSR-0 规则Mockery: library/完成自动加载。方式二通过 PEAR 安装在 Composer 普及之前PEAR 是 PHP 扩展与库的经典分发渠道。Mockery 曾托管在survivethedeepend.com的 PEAR channel 上官方文档给出的安装命令如下sudo pear channel-discover pear.survivethedeepend.com sudo pear channel-discover hamcrest.googlecode.com/svn/pear sudo pear install --alldeps deepend/Mockery两个channel-discover分别注册 Mockery 自身与 Hamcrest 的 PEAR 源--alldeps参数则要求一并安装所有依赖。从 Mockery 的 composer.json 可以看到其运行环境要求为php 5.3.2且依赖lib-pcre 7.0安装前需确保环境满足这些条件。需要说明的是PEAR 属于 Mockery 早期的分发渠道随着 Composer 成为 PHP 事实上的依赖管理标准现在绝大多数项目包括本仓库的 Laravel 示例都采用 Composer 方式PEAR 命令可视为历史兼容方案参考。方式三通过 Git 克隆安装Mockery 的 Git 仓库以 master 分支承载开发版本。官方文档给出两种用法结合 Composer如方式一所示在composer.json中以dev-master引用开发版即可结合 PEAR直接克隆源码后通过package.xml安装git clone git://github.com/padraic/mockery.git cd mockery sudo pear channel-discover hamcrest.googlecode.com/svn/pear sudo pear install --alldeps package.xml这种方式适合需要跟踪最新开发成果、或希望直接阅读/修改 Mockery 源码的开发者。不可或缺的搭档Hamcrest官方文档在三种安装方式之后特别强调了 Hamcrest 的地位上述过程会同时安装 Mockery 与 Hamcrest。省略 Hamcrest 不会破坏 Mockery但推荐安装它因为 Hamcrest 为参数匹配argument matching提供了更丰富的功能。这一点在源码层面得到了印证Mockery 的 composer.json 的require段声明了hamcrest/hamcrest-php: ~1.1说明在当前仓库所携带的 0.9 版本中Hamcrest 已经是硬性依赖随 Composer 安装会自动拉取。它提供的匹配器Matcher能力对应library/Mockery/Matcher目录中的实现用于在shouldReceive()-with(...)等场景中编写更精确、更可读的参数断言。版本升级与行为变更0.8 / 0.9对于升级场景官方 upgrading.rst 记录了两次重要的行为变化升级到 0.9mock 生成器generator被完全重写任何对 Mockery 内部深度集成的代码都需要重新评估升级到 0.8shouldIgnoreMissing()在方法调用不匹配任何已知预期时返回值从\Mockery\Undefined实例改为null。如需恢复 0.7.2 的行为可以显式调用asUndefined()$mock \Mockery::mock(stdClass)-shouldIgnoreMissing()-asUndefined();由于本仓库 Laravel 示例锁定的是0.9.*使用时应以上述 0.9 语义为准。在 Laravel 示例项目中的实际使用形态虽然 SignInTest.php 等测试代码主要通过 Laravel 内置的 Testing APIvisit、click、actingAs、factory等编写Mockery 在该测试栈中扮演的是底层测试替身支撑的角色——Laravel 5.1 的测试基础设施依赖 Mockery 来处理 Facade、事件与容器绑定的 mock 需求。这也解释了为何示例项目的 composer.json 将mockery/mockery列为require-dev。Mockery 的核心 DSL 用法可以参考官方 simple_example.rst通过\Mockery::mock()创建替身用shouldReceive()-times(3)-andReturn(...)声明预期调用与返回值并在tearDown()中调用m::close()清理容器。该文档还指出接入 PHPUnit 集成后可省去手动tearDown()。验证安装是否成功安装完成后可进入项目根目录执行测试来验证整个测试栈含 Mockery是否就绪vendor/bin/phpunit该命令由 Mockery 的 README 推荐适用于任何已通过 Composer 安装 Mockery 的项目。如果看到测试全部通过说明 Mockery 及其 Hamcrest 依赖已被正确解析、自动加载并可被测试框架正常调用。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐Perfetto 性能追踪排查从一条内存告警到定位某行渲染代码Perfetto 性能追踪排查从一条内存告警到定位某行渲染代码 Perfetto 是面向复杂软件系统的客户端性能追踪与性能分析工具能把内存、CPU、GPU可观测性后端开发工具前端数据可视化CANN/ops-blas sasum算子实现sasum算子实现 概述 BLAS sasum算子实现。 sasum Sum of Absolute Values 算子实现了计算向量元素绝对值的和是BLAS算子库高性能计算CANNRagas 安装完全指南从 pip 到源码可编辑安装的三种方式与依赖管理详解Ragas 安装完全指南从 pip 到源码可编辑安装的三种方式与依赖管理详解 本文是 Ragas 官方安装文档 docs/getstarted/instal人工智能大模型模型评测RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表