PHPUnit、接口和命名空间 (Symfony2)

2024-03-08

我目前正在为 Symfony2 开发一个开源包,并且真的希望它在单元测试覆盖率和一般可靠性方面成为最优秀的,但是由于我缺乏 PHPUnit 知识(或复杂的场景,谁知道)..

目前,我有一个 Mailer 类,用于处理个人邮件场景。它看起来有点像这样:

<?php
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
use Symfony\Component\Routing\RouterInterface;

class Mailer
{
    protected $mailer;
    protected $router;
    protected $templating;
    protected $parameters;

    public function __construct($mailer, RouterInterface $router, EngineInterface $templating, array $parameters)
    {
        $this->mailer = $mailer;
        $this->router = $router;
        $this->templating = $templating;
        $this->parameters = $parameters;
    }
}

很简单,那里有一些 Symfony2 接口 gubbins 来处理不同的路由和模板系统,快乐快乐快乐。

这是我尝试为上述设置的初始测试:

<?php
use My\Bundle\Mailer\Mailer

class MailerTest extends \PHPUnit_Framework_TestCase
{
    public function testConstructMailer
    {
        $systemMailer = $this->getSystemMailer();
        $router = $this->getRouter();
        $templatingEngine = $this->getTemplatingEngine();

        $mailer = new Mailer($systemMailer, $router, $templatingEngine, array());
    }

    protected function getSystemMailer()
    {
        $this->getMock('SystemMailer', array('send');
    }   
    protected function getRouter()
    {
        $this->getMock('RouterInterface', array('generate');
    }

    protected function getTemplatingEngine()
    {
        $this->getMock('RouterInterface', array('render');
    }
}

这里的问题是我的模拟对象没有实现 Symfony\Bundle\FrameworkBundle\Templated\EngineInterface 和 Symfony\Component\Routing\RouterInterface,所以我无法使用我自己创建的任何模拟对象。我尝试过的一种方法是创建一个抽象类,它在测试页上实现正确的接口,但是 getMockForAbstractClass 失败,指出它找不到该类...


嘲笑时你需要使用完全合格的类路径因为模拟功能没有考虑调用代码的名称空间或任何“use”语句。

Try

->getMock('\\Symfony\\Component\\Routing\\RouterInterface'); 

并省略第二个参数。通常指定方法弊大于利。 仅当你want所有其他方法都像以前一样工作,但您应该需要第二个参数。

Example

<?php

namespace bar;

class MyClass {}

namespace foo;

use \bar\MyClass;

class MockingTest extends \PHPUnit_Framework_TestCase {

    public function testMock() {
        var_dump($this->getMock('MyClass') instanceOf MyClass);
        var_dump($this->getMock('\\bar\\MyClass') instanceOf MyClass);
    }   
}

生产:

/phpunit.sh --debug fiddleTestThree.php 
PHPUnit @package_version@ by Sebastian Bergmann.


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

PHPUnit、接口和命名空间 (Symfony2) 的相关文章

  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • Php mysql 30秒后执行任务

    如何让 mysql 查询命令在访问 php 站点 30 秒后执行 您可以对执行 mysql 查询的 php 脚本发出 AJAX 请求 在 js 中使用计时器
  • 如何处理 PHP 中浮点数的奇怪舍入

    众所周知 浮点运算并不总是完全准确 但是如何处理它的不一致之处呢 As an example in PHP 5 2 9 this doesn t happen in 5 3 echo round 14 99225 4 14 9923 ech
  • 如何使用 PHP 从内容中查找 URL?

    需要一个简单的 preg match 它将在内容中查找 c aspx 不带引号 如果找到 它将返回整个 url 举个例子 content div 4 a href m c aspx mt 01 9310ba801f1255e02e411d8
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • 有没有办法在不使用 foreach 或其他函数的情况下在 PHP 中内爆关联数组的键和值?

    我有一个像这样的关联数组 myarray array a gt 1 b gt 2 c gt 3 我想显示数组键和值 如下所示 a is 1 b is 2 c is 3 我不想使用 print r 或 var dump 来执行此操作 我也不想
  • 如何将 .env 添加到 codeigniter?

    我尝试按照以下步骤使 php 连接到 Outlookhttps learn microsoft com en us outlook rest php tutorial https learn microsoft com en us outl
  • 从单个 javascript 函数向两个不同的 PHP 脚本发送两个 Ajax 请求

    是否可以同时向两个或多个 Php 脚本发送 Ajax 请求 我知道这可以串行实现 从 1 获取响应 然后从另一个获取响应 但我想知道是否可以同时实现 请协助我使用以下代码 function calShowUpload if http rea
  • Mongodb $push 嵌套数组

    我想向我的嵌套数组添加新数据 我的文档是 username erkin email email protected cdn cgi l email protection password b playlists id 58 name asd
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 如何使用额外标记输出 wp_list_categories

    我目前正在使用下面的脚本在无序列表中输出我的所有 WordPress 类别 如何获得带有额外标记的输出 ul ul 例如 ul li Category 1 rsaquo li li Category 2 rsaquo li ul 代替 ul
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • 使用 PHP 修剪字符串开头的任何零

    用户将在字段中填写与其帐户相关的数字 不幸的是 一些用户会在号码开头添加零来组成六位数字 例如 000123 001234 而其他用户则不会 例如 123 1234 我想 修剪 前面带有零前缀的用户的数字 因此如果用户输入 000123 它
  • 使用 Flot、html、PHP 和 MySql 查询绘制多个图表

    我正在尝试使用 Flot html PHP 和 MySql 查询绘制多个图表 但我陷入了困境 因为我找不到在同一个 html 页面中绘制多个 flot 的方法 为简单起见 在数据库 test db3 映像中包含以下字段 表1 用户名 发送邮
  • WooCommerce 自定义产品类型选项不隐藏自定义产品选项卡

    我刚刚向我的 WC 管理产品页面添加了自定义产品类型选项 add filter product type options this filter product type options 99 1 public function filte
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • 准备好的语句需要 0 个参数,给定 1 个参数..,使用 php 手册示例 [重复]

    这个问题在这里已经有答案了 我直接从 php 手册示例中获取了这个 它几乎与我需要的相同 但我仍然收到此错误 有人可以告诉我我错过了什么吗 stmt link gt prepare SELECT obitBody Photo FROM tn
  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函

随机推荐

  • 如何检查postgres用户是否存在?

    createuser允许在 PostgreSQL 中创建用户 ROLE 有没有一种简单的方法来检查该用户 名称 是否已经存在 否则 createuser 返回错误 createuser creation of new role failed
  • 在 GKE 下时拒绝EscalatingExec

    我们将 GKE 与 Kubernetes 集群结合使用 我们正在运行的应用程序之一是 Jenkins for CI 不幸的是 Jenkins Slave 需要使用 Docker 来挂载其主机的docker sock 这可能是一种升级漏洞 解
  • 当出现客户端未知错误时如何在 Perforce P4 中设置客户端根

    突然 当我跑步时p4 info在终端中 我注意到客户端根目录未设置 不知道为什么它突然被取消设置 以下是输出 其中显示 客户端未知 代替客户端根目录 我可以通过什么命令设置一样吗 我试过了p4 client and p4 set但可能是 语
  • 使用 Google Analytics for Android SDK 时遇到的问题 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 使用适用于 Android 的 Go
  • Python Flask 在执行函数的同时返回 html 页面

    我目前正在使用 Python Flask 创建一个 Web 应用程序 但我遇到了障碍 我不确定我是否正确地思考了它 因此 我网站的主页只是一个简单的登陆页面 其中包含执行网站功能所需的文本输入 我想要完成的是让网络应用程序在输入文本后执行两
  • 如何从部分视图将 JavaScript 渲染到 MasterLayout 部分?

    给定 MVC3 和 Razor 引擎 我得到 MasterLayout cshtml RenderSection JavaScript required false RenderBody 查看 cshtml MasterLayout csh
  • 为变量名称添加前缀以指示它们各自的范围或来源?

    在我工作过的公司中 我见过很多使用前缀来指示变量的范围或来源的情况 例如m对于班级成员来说 i对于方法内部变量和a or p 对于方法参数 public class User private String mUserName public
  • Android 媒体播放器错误 (-19, 0)

    我尝试在单击按钮时重播声音 但我得到错误 19 0 这意味着什么 My code final Button xxx Button findViewById R id xxx xxx setOnClickListener new View O
  • Azure 网站和 Sass

    我一直在尝试寻找是否有一种方法可以通过 windows azure 网站支持 sass 有人可以向我指出一些文档吗 或者如果可能的话现在就让我知道 我特别希望支持祖布基金会 http foundation zurb com index ht
  • Pandas:如果预定义列表中不存在,则将列值替换为空

    我有一个清单 X 其中包含列的一组合法值 说吧 我有专栏A 我想替换 设置 为空字符串 中的元素df A 如果它们的值不在 X 中 我怎样才能在 Pandas 中有效地做到这一点 我知道有isin 但这只是检查值是否存在并返回一系列 Tru
  • 通过Windows中的命令行工具合并两个png?

    我正在寻找一个可以通过命令行 Windows 7 使用的工具来合并两个相同大小的 png 到目前为止 我在搜索方面运气不佳 因为我见过的大多数工具都是相当笨重的应用程序 它们似乎不针对简单的操作 我想用覆盖图像中的非透明像素覆盖不透明基本图
  • 情节 orca 无法在 aws ec2 实例上工作

    我跟着this https github com plotly orca安装conda plotly orca在 AWS EC2 实例上 构建于anaconda python3图像 但击中Cannot open shared object调
  • WIX如何从自定义操作访问源文件

    我有一个 WIX 安装应用程序和许多源文件
  • 如何防止行高在顶部添加边距?

    每当我使用大line height like 1 6em它总是在文本的最顶部添加我不想要的边距 例子 http jsfiddle net EstpJ 1 http jsfiddle net EstpJ 1 我希望文本的边框清晰 并且没有任何
  • 分布式erlang安全如何?

    我想要有 2 个独立的 erlang 节点可以相互通信 so node a myhost将能够发送消息至b myhost 有没有办法限制节点a myhost 所以只有来自 a 的函数安全模块可以被召唤b myhost 它应该是这样的 a m
  • twitter bootstrap - 背景颜色

    我正在尝试更改引导程序的背景颜色和不透明度 我有以下 CSS well opacity 0 9 opacity 0 1 moz opacity 0 9 opacity 0 1 webkit opacity 0 9 opacity 0 1 b
  • CodeIgniter 中视图中的 $this 关键字

    我试图理解如何 this gt load gt view works insideCodeIgniter 中的视图文件的一部分 core Controller php 正在调用 core Loader php 然后调用 ci load 后者
  • 读取thunderbird地址mab文件内容

    我的 TBIRD 地址簿上有几个地址列表 每次我需要编辑包含在多个列表中的地址时 查找哪个列表包含要修改的地址都是一件很痛苦的事情 作为一个帮助工具 我想阅读几个文件 并只给用户一个列表 xxx MAB 文件仅包含一次搜索的搜索地址 有了生
  • 在 R 中将字符串拆分为新行[重复]

    这个问题在这里已经有答案了 我有一个如下数据集 Country Region Molecule Item Code IND NA PB102 FR206985511 THAI AP PB103 BA 107603 F000113361 10
  • PHPUnit、接口和命名空间 (Symfony2)

    我目前正在为 Symfony2 开发一个开源包 并且真的希望它在单元测试覆盖率和一般可靠性方面成为最优秀的 但是由于我缺乏 PHPUnit 知识 或复杂的场景 谁知道 目前 我有一个 Mailer 类 用于处理个人邮件场景 它看起来有点像这