Dataprovider可以从setUp获取连接

2023-12-20

通过setUp()连接数据库失败

class ChanTest extends PHPUnit_Framework_TestCase
{
    protected $db;

    protected function setUp()
    {
        $this->db = new Core\Database('unitest');
    }

    /**
     * @dataProvider testProvider
     */
    public function testData($a, $b, $c)
    {
        $this->assertEquals($a + $b, $c);
    }

    public function testProvider()
    {
        $this->db->query('SELECT `a`, `b`, `c` FROM `units`');

        return $this->db->rows();
    }
}

连接到数据库本身就可以工作

class ChanTest extends PHPUnit_Framework_TestCase
{
    protected $db;

    protected function setUp()
    {
        $this->db = new Core\Database('unitest');
    }

    public function testData($a, $b, $c)
    {
        $this->db->query('SELECT `a`, `b`, `c` FROM `units`');

        foreach ($this->db->rows() as $item) {
            $this->assertEquals($item['a'] + $item['b'], $item['c']);
        }
    }
}

如果我通过 dataProvider 连接数据库setUp function,它响应Fatal error: Call to a member function query(),但是如果连接到数据库本身有效,则可以dataProvider得到setUp function的设置?


这是设计使然:为了确定测试的数量,PHPUnit 在实际运行测试(以及 setUp 方法)之前运行 dataProviders。

来自数据提供者手册 https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers:

笔记: 所有数据提供程序都在调用 setUpBeforeClass 静态方法和第一次调用 setUp 方法之前执行。因此,您无法访问从数据提供程序中创建的任何变量。这是 PHPUnit 能够计算测试总数所必需的。

在您的情况下,我将使用数据库的单例/实例模式。

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

Dataprovider可以从setUp获取连接 的相关文章

  • PHPUnit:存根多个接口

    我正在掌握 PHPUnit 到目前为止发现它非常容易使用 但我遇到了一个给我带来困难的测试用例 我正在针对一组预期对象实现的接口 一些是 PHP 的 一些是自制的 编写代码 并且 SUT 需要一个输入对象来实现多个接口 例如 class M
  • 测试助手类的正确位置在哪里? (phpunit/最佳实践)

    我想使用 PHPUnit 测试我的应用程序 所以我像往常一样有我的应用程序类和第二棵带有测试类的树 现在我需要进行一些测试 一种虚拟 模拟对象 我想知道应该将它们放在哪里 它是一个不同的用例 它应该放在公共 lib 文件夹中还是更喜欢什么
  • PHPstorm PHPunit 代码共同覆盖

    当我在 PHPstorm 中运行测试套件时 所有代码覆盖率都为 0 我知道这不是真的 当我从命令行运行 PHPunit 时 记录的 HTML 输出文档显示我实际上确实有覆盖率并列出所有详细信息 在 PHPstorm 中 我将 PHP 解释器
  • 如何在 PHPUnit 中重复测试?

    我知道 repeat 选项 但我宁愿在测试中和每个测试中定义重复 在我的单元测试中 有些测试我不想重复 有些测试我比其他测试更想重复 我刚在想 protected function tearDown if test has not been
  • 如何使用 PEAR 安装程序完全删除 PHPUnit?

    几天前 我使用 PEAR 安装程序安装了 PHPUnit 我还安装了 Selenium RC 用于 PHP 测试 现在我想卸载它 同时删除所有相关的文件夹和文件 我运行了以下命令 pear uninstall phpunit PHPUnit
  • phpunit 避免模拟的构造函数参数

    有什么方法可以避免 phpunit 调用模拟对象的构造函数 否则我需要一个模拟对象作为构造函数参数 另一个模拟对象作为构造函数参数 等等 api 似乎是这样的 getMock className methods array array ar
  • 在 phpunit 中 __construct 与 setup 之间有什么区别?

    我很想知道在测试类 construct 中创建对象是一种很好的做法 或者我们应该始终使用 setup teardown 方法 或 setUpBeforeClass tearDown AfterClass 方法 我知道每个测试都会调用 set
  • 使用 Composer 安装 PHPUNIT

    我有一个关于 Symfony 2 的项目 我想在 Windows 7 上使用 PHPUNIT On githut phpunit is Composer Simply add a dependency on phpunit phpunit
  • 在 PHPUnit 中实现给定接口的模拟对象上未定义方法?

    我是单元测试和 PHPUnit 的新手 我需要一个模拟 我可以完全控制它 实现ConfigurationInterface界面 测试对象是ReportEventParamConverter对象和测试必须检查我的对象和界面之间的交互 Repo
  • 如何修复在 laravel 项目中运行vendor/bin/phpunit 时权限被拒绝的问题

    每当我执行vendor bin phpunit在我的 laravel 项目的根路径中 它返回一个没有权限错误 我该如何解决这个问题 重要提示 我不想使用composer update或删除部分或全部vendor 目录然后使用composer
  • 如何对 Laravel Mailable 进行断言

    在测试中 我想使用以下方法对 Mailable 做出一些断言Mail assertSent 像这样 Mail assertSent MyMailable class function mail use user return mail gt
  • 对需要发送标头的项目进行单元测试

    我目前正在与 PHPUnit 合作 尝试在我正在编写的内容的同时开发测试 但是 我目前正在编写会话管理器 并且在这样做时遇到了问题 Session 处理类的构造函数是 private function construct if header
  • BrowserKit 组件不可用

    当我尝试启动功能测试时出现错误 BrowserKit 组件不可用 php bin phpunit usr bin env php PHPUnit 6 5 14 by Sebastian Bergmann and contributors T
  • 如何对 Google API 调用进行单元测试

    我有一个以下方法 它从 Google Analytics 检索访问次数最多的页面 public function getData limit 10 ids 12345 dateFrom 2011 01 01 dateTo date Y m
  • phpunit --debug 仍然只显示点

    我想查看 phpunit 运行期间当前执行的测试 我用 debugparam 但仍然只得到点 phpunit debug PHPUnit 3 7 19 by Sebastian Bergmann Configuration read fro
  • 如何在 Laravel 中基于 application/json 标头加载路由

    我正在使用application json标头来控制我的控制器在收到请求时的行为 我需要在单元测试中的 POST 中包含application json header 我试过了 public function testStore this
  • PHPUnit 和来自 Guzzle 的模拟请求

    我有一堂具有以下功能的课程 public function get string uri stdClass this gt client new Client response this gt client gt request GET u
  • 让 PHPUnit 忽略一些事情?

    我有一个 PHPUnit 测试类 我希望在测试运行中忽略它 我知道我可以通过重命名它来做到这一点 以便它的文件名中不包含 测试 一词 但我不想这样做 因为它比我想要的更混乱了源代码控制水域 有人有建议吗 有几个选项phpunit命令可以帮助
  • PHP7.4中如何让PHPUnit测试属性初始化?

    采用 PHP7 4 类型化属性时 我们的应用程序中的代码样式更改之一是从 if null object gt value to if empty object gt value 即使类型化属性可为空 第一个 if 语句也会抛出Error 下
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal

随机推荐

  • 如何在Pygame中画一个半透明的圆圈?

    我正在尝试在 Pygame 中画一个半透明的圆圈 这是我的代码 import pygame pygame init clock pygame time Clock screen pygame display set mode width h
  • Solr DataImportHandler:我可以使用 XPathEntityProcessor 从 xml 属性获取动态字段名称吗?

    我有一些 XML 要摄取到 Solr 中 这听起来像是一个旨在由 DataImportHandler 解决的用例 我想要做的是从一个 XML 属性中提取列名 并从另一属性中提取值 这是我的意思的一个例子
  • 跨流程使用事务

    我正在尝试使用 System Transactions TransactionScope 来协调一组进程 每个进程都执行一些数据库工作 最终 所有进程都需要通过一个父进程以原子方式提交或回滚 不幸的是 到目前为止我所尝试的一切都不起作用 我
  • Maven GWT 2.0 和 Eclipse

    有谁知道使用 maven 和 eclipse 使用新的 2 0 版本的 GWT 创建项目的好指南吗 我在让他们很好地合作方面遇到了很多问题 对于它的价值 我可以使用 Maven Eclipse 插件创建一个 gwt 项目 该项目工作正常 但
  • iOS - 更改 UIBarButtonItem 高度

    UIToolbar 有一个很好的调整大小选项 self navigationController toolbar frame 我想知道是否有人知道更改 UIBarButtonItem 高度的方法 我有一个高度为 117 像素的自定义工具栏
  • Rails where() 数组上的 SQL 查询

    我会尽可能地解释这一点 我对用户帖子有疑问 selected posts Posts where category gt Baseball 我想写下以下声明 这是伪术语 User where user has a post in selec
  • 自定义对话框中的 java.lang.IllegalStateException

    我是 Android 新手 正在开发自定义警报对话框 我想通过单击编辑按钮打开另一个对话框 代码如下 if v getId R id edt order System out println edit buton click System
  • 如何配置 charles-proxy 在 Linux 中与 chrome 一起使用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试设置 chrome 代理 google chrome proxy server 127 0 0 1 8888 Chrome 打开一个
  • 是否有处理 IO 的组长协议规范?

    在Erlang中 每个进程都有一个组长 当一个进程想要打印一些东西 即它调用io库或做类似的事情 时 它会向其组长发送一条消息 我的问题是 在哪里可以找到这些消息的规范 或者一般来说 明确小组领导者应该做什么 我通过一些实验设法发现 有时该
  • Angular 2 选择器中的 kebab-case (tslint)

    这是我的tslint json file rulesDirectory node modules codelyzer rules class name true comment format true check space curly t
  • 浮动操作按钮不会引发 OnClick 事件

    我有以下布局
  • 通过 Azure API 管理将 REST API 公开为 SOAP

    我们有一组现有的 REST API NET Core 我们需要将这些 API 公开为 SOAP 服务 希望通过使用 Azure API 管理来实现 这可能吗 我看过很多关于将 SOAP 服务公开为 REST API 的帖子 但没有看到相反的
  • c\c++ 中存储 COM 的 VT_DECIMAL 的正确类型是什么?

    我正在尝试为 ADO 编写一个包装器 A DECIMAL是一种类型 aCOM VARIANT可以是 当VARIANT类型是VT DECIMAL 我试图将其放入 C 原生数据类型中 并保留变量值 似乎正确的类型是 long double 但我
  • 在vba excel中通过CDO获取gmail收件箱邮件消息

    我想使用 VBA 中的 CDO 访问 Gmail 帐户中的收件箱 我已经成功发送邮件消息 但不知道如何将收件箱消息提取到 Excel 工作表中 如果可能的话 我希望能够识别每条消息的标签 虽然这个问题特别要求 CDO 但从这个类似的问题 h
  • 如何让我的 Firefox 扩展工具栏按钮自动显示?

    我创建了一个由工具栏按钮组成的 Firefox 扩展 如何进行设置 以便在安装扩展程序时 该按钮自动出现在主工具栏中 我不希望我的用户必须转到自定义工具栏菜单并将我的按钮拖过来 From https developer mozilla or
  • 对日期字符串列表进行排序

    我有一个任意的日期字符串列表 mm yyyy 如下所示 d 09 2012 04 2007 11 2012 05 2013 12 2006 05 2006 08 2007 我需要首先按年份级别 升序 对该列表进行排序 然后按月份级别 升序
  • 如何处理任意大的整数

    我正在研究一种编程语言 今天我得到了可以编译阶乘函数 递归 的点 但是由于整数的最大大小 我能得到的最大阶乘是阶乘 12 有哪些技术可以处理任意最大大小的整数 该语言目前的工作方式是将代码翻译为 C 如果您需要大于 32 位 您可以考虑使用
  • 是否可以隐藏或删除谷歌电子表格中的“文件”“编辑”等菜单?

    是否可以隐藏或删除谷歌电子表格中的 文件 编辑 等菜单 并且只有所有者才能看到它们 它适用于脚本创建的菜单 但不适用于默认菜单 是否有解决方法可以防止其他编辑者编辑我的脚本 谢谢 是的 通过 url 参数将其置于预览模式 例如 From h
  • 如何在独立/CDN 模式下更改 Vuetify 中的主题颜色?

    我正在尝试更改 Vuetify 中的命名颜色 以便应用程序周围使用的视觉控件集中继承主题 并且不需要为每个组件单独定义颜色 The Vuetify 主题文档 https vuetifyjs com en style theme关于更改主题颜
  • Dataprovider可以从setUp获取连接

    通过setUp 连接数据库失败 class ChanTest extends PHPUnit Framework TestCase protected db protected function setUp this gt db new C