Symfony/PHPUnit 模拟服务

2023-12-27

我正在使用 PHPUnit 为 Symfony 编写功能测试,但我的模拟不起作用。我可能误解了它们的工作原理。

在我的单元测试中setUp()方法我有这个代码:

...
// Create a stub
$stub = $this->getMockBuilder('\\ApiBundle\\Util\\WordPressBridge')
    ->disableOriginalConstructor()
    ->getMock();

// Configure the stub.
$user = new WordPressUser();
$user->setUsername('dummy');
$stub->expects($this->any())
     ->method('checkCredentials')
     ->will($this->returnValue(true));
$stub->expects($this->any())
     ->method('getUser')
     ->will($this->returnValue($user));
...

在我的 Symfony 应用程序中,我定义了一个服务:

services:
    api.wp_bridge:
        class: ApiBundle\Util\WordPressBridge
        arguments: [@service_container]

据我了解,模拟应该取代真实的WordPressBridge,但事实并非如此。我的原版还在用。我错过了什么吗?


据我了解,模拟应该取代真正的 WordPressBridge,但事实并非如此。我的原版还在用。我错过了什么吗?

基本上你必须在 Symfony 容器中以某种方式替换你的服务。

如果您进行“功能测试”,那么您可能应该为以下内容创建测试“虚拟”服务"test"env 将会覆盖原来的。你可以这样做:

in src/YourBundle/Resources/config/services.yml

services:
    api.wp_bridge:
        class: %api.wp_bridge.class%
        arguments: [@service_container]

in 应用程序/配置/config.yml

parameters:
    api.wp_bridge.class: "ApiBundle\Util\WordPressBridge"

in 应用程序/配置/config_test.yml

parameters:
    api.wp_bridge.class: "ApiBundle\Util\TestWordPressBridge"

然后功能测试将使用“ApiBundle\Util\TestWordPressBridge” - 因为它是在"test" env.

您可以尝试模拟容器并将其传递给测试内核,但是如果没有其他模拟库(在纯 PHPUnit 中),这可能会很痛苦。

我个人正在使用phpspec2 http://phpspec.net/对于“单元”测试,其中模拟很容易:)以及对于我正在使用的一些“接受标准”东西behat http://behat.org/ and mink http://mink.behat.org/

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

Symfony/PHPUnit 模拟服务 的相关文章

  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • 通过 Twig 中的资源包含来自供应商库的 css 和 js 文件

    我想包括css and js将我的供应商目录中的库中的文件复制到 Twig 中 我下载了morrisjs通过 Composer 进入我的 symfony 供应商目录 现在我想包括主要内容css und js文件到我的 Twig 模板中 但据
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co
  • 更改 Woocommerce 中“我的帐户”页面上的标题

    我见过大量有关如何使用 WooCommerce 我的帐户仪表板重新排序 更改导航和页面的示例 但我一生都无法弄清楚如何更改每个部分的主要标题 我的帐户 订单 下载 地址等 我已经搜索过模板 但没有任何乐趣 我尝试使用条件 php 注释来回显
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • Symfony 2:如果用户具有特定角色,则将用户重定向到页面

    我有一个小问题 我希望无论用户在我的网站上哪里 如果他具有 ROLE DEGRADE 角色 他就会被重定向到特定页面 我该怎么做 我必须使用防火墙 我不想将用户重定向到表单登录 而只是重定向到一个简单的页面 我希望在我的网站上随处可见 而不
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 用户区域设置在第一次请求时不起作用

    我的网站运行的是 Symfony 主版本 到目前为止 我能够使用本地监听器逻辑 http symfony com doc master cookbook session locale sticky session html来自网站 由于代码
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification

随机推荐

  • 如何检测 Windows 10 是否处于平板电脑模式

    我正在尝试找到一种方法来检测 Windows 10 是否处于平板电脑模式 请注意 这不是查询用户是否有平板电脑 这可以通过以下方式解决GetSystemMetrics SM CONVERTIBLESLATEMODE 就我而言 无论 Win1
  • 从一组给定的数字中生成选择的最佳方法是什么?

    例如 如果要求在 1 到 5 之间做出所有选择 答案如下所示 1 2 3 4 5 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5 1 2 3 1 2 4 1 2 5 1 3 4 1 2 3 4 5 谁能建议一
  • YAML 中的单个感叹号有什么作用?

    我正在与YamlDotNet http sourceforge net projects yamldotnet 库 加载 YAML 文件时出现此错误 解析标签时 未找到预期的标签 URI YAML 文件应该是格式良好的 因为它来自直接从 R
  • 正文中的邮件链接和换行符

    In a mailto链接 我正在尝试使用换行符 但我失败了 我尝试过 n n br 并尝试搜索 Enter 的 ascii 值 但我没有得到我想要的内容 a href Mail me a 你们能帮忙吗 Use 0D 0A body Hel
  • 参数类型中的这三个点是什么[重复]

    这个问题在这里已经有答案了 可能的重复 该方法签名中的省略号代表什么 https stackoverflow com questions 2367398 what is the ellipsis for in this method sig
  • 如何使 QListWidget 项目可编辑

    我是 PyQt 的新手 我首先在Qt Designer中制作了一个对话框 并在QListWidget中实现了简单的添加 删除 向上 向下操作 除了编辑之外的所有操作都很有效 所以我做了很多关于如何使项目可编辑的搜索 但结果并不令人满意 我能
  • Imageview 不显示圆角

    我试图使我的布局像这样 但我无法使我的图像视图像这样带有圆角 它在 Android studio 的布局编辑器中完美显示 但在真实设备中我得到的是平角 我厌倦了 XML 和代码 但没有一个对我有用 请帮助我使我的布局像这个示例图像一样 我的
  • Python:基于 Pandas 中的 2 列进行分箱

    寻找一种基于 Pandas 中的 2 列的快速而优雅的分类方式 这是我的数据框 filename height width 0 shopfronts 23092017 3 285 jpg 750 0 560 0 1 shopfronts 2
  • Ruby on Rails - 生成 bit.ly 样式标识符

    我正在尝试生成与 bit ly url 样式相同的 UUID 例如 http bit dot ly aUekJP 或 cloudapp 的 http cl dot ly 1hVU 甚至更小 我该怎么做 我现在正在为 ruby 使用 UUID
  • DTM - s.t函数与页面加载规则关系

    我不清楚动态标签管理器 DTM 如何执行 Adob e Analytics 页面加载规则 特别是它何时触发 Adob e Analytics 请求 s t 函数 Adobe 提供了此图 https marketing adobe com r
  • MVVM INotifyPropertyChanged 与自动属性名称实现

    根据我的理解 我们可以在 MVVM 风格的应用程序中使用 INofityProperty 代码类似于以下内容 object SelectedPerson public object SelectedPerson get return Sel
  • sp_send_dbmail 因附件而失败

    我需要发送带有文件附件的电子邮件 附件必须来自图像类型数据字段 在查询窗口和存储过程中运行以下代码时 不会发送电子邮件 在查询窗口中 它只显示 命令成功完成 但没有电子邮件 EXEC msdb dbo sp send dbmail reci
  • 在 TypeScript 中,将类括在尖括号“<>”中意味着什么?

    我对 TypeScript 非常陌生 并且非常喜欢它 尤其是在 Javascript 中进行 OOP 是多么容易 然而 当涉及到使用尖括号时 我一直试图弄清楚语义 从他们的文档中 我看到了几个例子 例如 interface Counter
  • 减去 POSIXct 时如何使相同单位的时间差

    我想减去 POSIXct 我可以做到这一点 但根据第一行 我猜 差异将以秒或分钟为单位 下面您可以看到第一个差异以秒为单位 第二个差异以分钟为单位 因为我更改了第一行中的时间差 diff in seconds because 1st row
  • 在 Python 中的 SELECT 语句中传递列名

    if count 1 cursor execute SELECT FROM PacketManager WHERE filters 0 parameters 0 all rows cursor fetchall elif count 2 c
  • 理解和构建社交网络算法

    我不确定这是否是提出这个问题的正确平台 但我的问题陈述是 我有一家书店 客户数量为 x x 很大 客户可以告诉我一本书是好还是坏 不推荐 我有一个将书籍放在一起的内在逻辑 所以如果客户说一本书不好 他是在说类似的书也不好 但不要向他展示这一
  • 如何在 Intellij Idea 11 上运行 scala 代码?

    我是 intellij idea 的新手 我决定转变 因为我发现 eclipse 上的 scala 插件有烦人的 bug 但是 听说很好用的intellij idea 看起来很难用 我浏览了scala 插件页面入门 http conflue
  • Tsrange - 计算两个范围之间的差异

    我有两张桌子free time and appointment 两者都包含 tsrange 如何编写一个查询 或函数 来确定 减去 差异后的实际空闲时间appointment来自freetime INSERT INTO free time
  • Django:为 request.user 使用自定义类?

    我已经扩展了 Django 的默认用户类 如下所示 class CustomUser User friends models ManyToManyField self symmetrical False 但现在我想在任何地方使用它而不是默认
  • Symfony/PHPUnit 模拟服务

    我正在使用 PHPUnit 为 Symfony 编写功能测试 但我的模拟不起作用 我可能误解了它们的工作原理 在我的单元测试中setUp 方法我有这个代码 Create a stub stub this gt getMockBuilder