首页/新闻资讯/正文详情

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

发布时间:2026/9/24 22:20:58 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

书籍是人类进步的阶梯:一套可落地的阅读方法论
书籍是人类进步的阶梯:一套可落地的阅读方法论

我经常被问到一句话:读书到底有什么用?尤其是成年人,工作忙、压力大,打开一本书的功夫,足够刷几十条短视频了,凭什么还要花这个时间?每次遇到这种问题,我都会想起高尔基那句被说了无… · 2026/9/24 22:20:46

工控机跑AI实战:用AMD 7730U部署本地大模型与视觉推理
工控机跑AI实战:用AMD 7730U部署本地大模型与视觉推理

边缘算力这个词火了也有两三年,但真正让工控机站到AI风口上的,是最近这一波本地大模型和小模型推理需求的暴涨。以前提到工控机,大家脑子里还是PLC、数据采集、运动控制这些老场景,而现在越来越多的项目开始问:能不能让… · 2026/9/24 22:20:46

I2C总线1000KHz高速扫描测试实战:从USB转I2C到Excel报告
I2C总线1000KHz高速扫描测试实战:从USB转I2C到Excel报告

做嵌入式硬件调试这么多年,我越来越觉得,把I2C总线的测试做成一个可记录、可回看、可归档的流程,比单纯点亮一个设备重要得多。最近我手头正好需要验证一批从设备在1000KHz总线速率下能否被稳定扫描识别,测试项的名字就叫“USB TO… · 2026/9/24 22:20:39

DDS+PLL混合架构跳频频率合成器设计实战
DDS+PLL混合架构跳频频率合成器设计实战

简介:本资源是一篇聚焦跳频通信系统核心部件——跳频频率合成器的工程设计论文,面向通信工程、电子对抗与射频电路方向的高年级本科生、研究生及从事军用/抗干扰通信系统研发的工程师。文章针对传统DDS输出频率受限、PLL锁定时间长的痛点,提出… · 2026/9/24 23:40:27

LuatOS嵌入式开发中RSA非对称加密实战:密钥、填充与分段详解
LuatOS嵌入式开发中RSA非对称加密实战:密钥、填充与分段详解

做嵌入式物联网开发,尤其是用LuatOS这套方案的人,迟早都会跟RSA打交道。设备接入、固件防篡改、敏感数据上云,这些场景背后全是非对称加解密的身影。LuatOS的核心库把RSA封装成了几个非常简洁的API,用起来门槛不高,但真… · 2026/9/24 23:40:27

LuatOS核心库RSA加解密与签名API实战指南
LuatOS核心库RSA加解密与签名API实战指南

做物联网设备开发的朋友应该都对LuatOS不陌生,它让合宙系模组可以用Lua脚本快速写出业务逻辑,大大降低了嵌入式开发的门槛。不过脚本语言写起来爽,真到了需要做设备身份认证、数据加密上报这些安全相关功能时,很多人就开始挠头了—… · 2026/9/24 23:40:27

组织级AI Coding落地实践:从个人提效到系统化生产力
组织级AI Coding落地实践:从个人提效到系统化生产力

1. 先说结论:个人提效和組織提效,根本不是一回事AI Coding 这个话题,最近一年几乎被聊烂了。随便打开一个技术社区,都能看到"某某用 AI 一天写完一个模块""某某靠提示词把开发效率翻了三倍"之类的帖子。但我在… · 2026/9/24 23:40:27

Deep Agents的工程骨架:Harness Engineering实践指南
Deep Agents的工程骨架:Harness Engineering实践指南

1. 先聊清楚:Deep Agents 的复杂度到底来自哪里1.1 你以为的瓶颈和实际的瓶颈往往不是一回事过去两年我一直在做深度智能体方向的实际项目,最早和大家一样,以为把模型换成更强的新版本,agent 的表现就能水涨船高。结果测试下来发现… · 2026/9/24 23:40:27

策略模式实战:用Java 8 Lambda将if-else改造成插件盒式重构
策略模式实战:用Java 8 Lambda将if-else改造成插件盒式重构

说真的,你有多久没在自己的代码里见过这种场景了:一个方法从头到尾全是 if-else,一个分支接一个分支,每来一个新需求,就在后面再挂一个 else if。写法上没什么技术含量,但代码量越滚越大,改起来… · 2026/9/24 23:40:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码