使用 Mockery 模拟在另一个静态方法中调用的静态方法

2023-12-28

我想使用 Mokcery 模拟一个已在另一个方法中使用的静态方法,如下所示:

Class SomeClass
{
   public static function methodA()
   {
     .....;
     self::B();
   } 
   public static function methodB()
   {
     Do SomeThing
   }
}

如果我想模拟方法B,并使用方法A,模拟功能不起作用,只是因为方法B在方法A中使用,如下

 use Mockery as m;
   $mocktest = m::mock->('SomeClass[B]');
   $mocktest->shouldReceive('B')->andReturn("expectedResult");
   $mocktest->methodA();

上面的代码将导致 methodB 仍然返回其原始结果而不是“expectedResult”。 我希望methodA中使用的methodB被mock,我该如何操作?


您需要使用别名来模拟静态方法:

$mock = \Mockery::mock('alias:SomeClass');

注意该类还无法加载。不然嘲讽就无法别名了。

文档中的更多内容:

  • 模拟公共静态方法 http://docs.mockery.io/en/latest/reference/public_static_properties.html
  • 快速参考 http://docs.mockery.io/en/latest/reference/startup_methods.html

请注意,模拟静态方法不是一个好主意。如果您觉得需要它,那么您的设计就有问题。 嘲笑你正在测试的类更糟糕,这表明你的类有太多的责任。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Mockery 模拟在另一个静态方法中调用的静态方法 的相关文章

  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 获取 YouTube 最高缩略图分辨率

    我想获得 youtube 最高缩略图 maxresdefault jpg 像这个 http i ytimg com vi Cj6ho1 G6tw maxresdefault jpg http i ytimg com vi Cj6ho1 G6
  • 图像随机损坏(但刷新后加载)并显示“资源解释为图像但使用 MIME 类型 text/html 传输”

    我目前正在开发一个简单的 php 网站 问题是 我的整个网站中的图像 发生在所有 php 文件中 随机损坏并显示错误资源解释为图像 但以 MIME 类型 text html 传输但是 如果我尝试多次刷新页面 可以再次加载图像并且错误消失 我
  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • PHP MongoDb 驱动程序:如何设置执行代码的超时

    我有以下代码 它在 MongoDb 端执行一段代码 mongoCode new MongoCode Some JS code db gt execute mongoCode array socketTimeoutMS gt 1000000
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从网站网址中隐藏 .html 扩展名

    我知道这个问题以前曾被问过 但有人知道隐藏 html 扩展名的好方法吗 我已经尝试了许多代码和许多答案https stackoverflow com https stackoverflow com 但我没有看到结果 那是我再问你一次 我有一
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 使用值填充的 Symfony2 自定义字段类型

    这是先前问题的后续问题Symfony2 自定义表单类型或扩展 https stackoverflow com questions 24079288 symfony2 custom form type or extension 我正在尝试为订
  • 是否可以用 PHP 编写电子邮件解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • Nginx 502 网关错误。通过增加buffer来解决。为什么?

    我正在设置 LEMP 堆栈来运行 Drupal 我安装了 Nginx 和 PHP FastCGI Nginx 工作正常 但任何运行 PHP 的尝试都会出现错误 502 Bad Gateway 谷歌很快发现 nginx 502 错误网关 ht
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC

随机推荐

  • 低通滤波器编程

    我已经用 Java 编写了一个 Sega Master System 模拟器 尽管这个问题不是 Java 特有的 并且已经完成了除 SN76489 声音芯片之外的所有内容 该芯片如何发出声音很简单 我遇到的问题是将其转换为可通过 PC 笔记
  • 使用门户更改 Azure 应用程序设置,无需重新启动

    我有时会这样 在 Azure 门户中 我转到 应用程序服务 然后单击我的 Web 应用程序 然后转到 应用程序设置 在这里 我更改了 应用程序设置 列表中的一个值 例如 我将 128 更改为 129 最后我点击 保存 这会导致我的网络应用程
  • 姜戈·格拉佩利错误

    我对姜戈 格拉佩利有意见 它似乎加载 CSS 得很好 但样式似乎 关闭 也许一些图片可以澄清我的意思 我刚刚遇到了这个 你需要确保 grappelli 出现在之前 django contrib admin in INSTALLED APPS
  • KnockoutJS - 更新视图模型/映射插件

    如何更新完整的 viewModel 在页面加载时 我得到一个模型并使用转换它ko mapping fromJS myObject 到一个视图模型 如果用户单击按钮我想从服务器获取更新的数据 现在我想应用这些更新 如果我使用ko applyB
  • 使用 EnvDTE.ExecuteCommand 以编程方式开始调试特定项目

    我有一个包含多个启动项目的解决方案 我试图每晚自动重新启动其中一个项目 同时将新进程附加到同一个调试器 我能够重新启动该过程 使用Process Start 并将当前调试器附加到其上 但到目前为止它的可靠性还不是很高 并且根据设计 单击 停
  • 是否可以禁用自动完成功能?

    我知道我不应该这样做 但向客户解释您应该通过浏览器进行操作可能会更容易 他们有一台公共计算机和一台以管理员帐户 我正在编写的代码 在计算机上运行的服务器 他们希望人们输入他们的信息 但他们不希望有人按下电子邮件输入框来显示人们的电子邮件地址
  • Chrome 打包应用程序中的 Google Drive Realtime API

    有谁知道如何使用Google 云端硬盘实时 API https developers google com drive realtime application in a Chrome 打包应用程序 https developer chro
  • 什么是 .episode 文件..?

    JAXB 中的 episode 文件是什么 它是由 JAXB 生成的 还是我们操纵的配置文件 以避免 JAXB 重新生成相同的类 Note 我是EclipseLink JAXB MOXy https wiki eclipse org Ecl
  • 如何确保在 Android N 及更高版本上设备重新启动时调用PeriodicWorkRequest

    我最近尝试使用WorkManager s PeriodicWorkRequest这是在后台定期获取用户位置更新的可靠方法 该库满足了我的要求 这个特殊的细节引起了我的注意 即使应用程序或设备重新启动 也能保证任务执行 实现并测试它后 我尝试
  • 在用户窗体中使用类模块变量(需要错误“424”对象)

    我有一个类模块 其中托管有一个 worksheet change 子项 并且在该子项中必须弹出一个用户表单 我想在用户窗体的代码中使用类模块中的许多变量 然而 无论我做什么 我都无法让它发挥作用 我尝试应用该方法这个非常长的指南 https
  • 无法加载非 Laravel Composer 包

    这是我第一次尝试加载不使用 Laravel 服务提供者或外观的 Composer 包 我正在尝试安装这个包 https github com mollie mollie api php https github com mollie mol
  • [GTK]GTK中是否可以实现玻璃/模糊效果?

    我想知道是否有任何小部件可以获得类似 MacOS 的模糊透明背景 深度桌面环境可以模拟this https ibb co bsQRx5在 Qt 的上下文菜单中 Windows 正在慢慢采用这种风格 https www windowscent
  • 用C写入Linux sysfs节点

    我可以从 shell 激活系统上的 LED 如下所示 echo 1 gt sys class leds NAME COLOR LOCATION brightness 我想从 C 程序中执行完全相同的操作 但我无法找到有关如何完成此操作的简单
  • IHostedService 可在 Azure Functions 应用程序中使用吗?

    不管我们是否should 我们可以使用IHostedService在 Azure Functions 应用程序中 这是尝试将托管服务 特别是后台服务 注册为IHostedService internal sealed class Start
  • 如何在Python中检查字符串是否包含列表中的元素

    我有这样的事情 extensionsToCheck pdf doc xls for extension in extensionsToCheck if extension in url string print url string 我想知
  • 从 js 使用 Phonegap 3.0 调用 Activity 方法的最佳方式

    我正在尝试使用 MainActivity 中的本机方法从phonegap 中的index html 拨打电话 我使用的是phonegap 3 0和android 4 3平台 我尝试过第二个答案 https stackoverflow com
  • 减去超过 60 分钟的时间

    我有一个数据集 其中包含足球赛事的时间安排 一场比赛超过 60 分钟 我正在尝试计算间隔 这是我拥有的数据 data lt c 11 14 17 27 25 34 39 17 39 59 42 32 50 15 50 53 64 22 67
  • 如果我不使用 LIMIT,那么使用 COUNT() 和 FOUND_ROWS() 有什么区别?

    使用之间有区别吗 SELECT COUNT against SELECT FOUND ROWS 我知道当你有限制时应该使用找到的行 但是如果你不使用限制 真的有什么区别吗 您将以两种不同的方式获得相同的结果 COUNT 是一个聚合函数 ht
  • 如何使 PagerSnapHelper 在 RecyclerView 中双向对齐?

    我使用下面的代码将 PagerSnapHelper 附加到带有水平 LinearLayoutManager 的 RecyclerView SnapHelper snapHelper new PagerSnapHelper snapHelpe
  • 使用 Mockery 模拟在另一个静态方法中调用的静态方法

    我想使用 Mokcery 模拟一个已在另一个方法中使用的静态方法 如下所示 Class SomeClass public static function methodA self B public static function metho