PHPUnit 和全局变量

2023-12-24

我正在学习和探索 PHPUnit 与 PHP 5.2.9 的应用程序,并遇到了全局问题。我已将 $backupGlobals 设置为 FALSE,包括文档“@backupGlobals 已禁用”,这似乎不会影响 PHPUnit 备份全局变量的行为。我有什么遗漏的吗?我需要更改 PHPUnit 的 xml 文件吗?创建引导程序?

配置.php:

$testString = 'Hello world!';

basicApp.php:

require ('D:\data\clients\security.ca\web_sites\QRASystems.com\wwwroot\__tests\BasicApp\config.php');

class BasicApp {

public $test;

public function __construct() {
    global $testString;
    $this->test = $testString;
}

public function getTest() {
    return $this->test;
}

public function setTest($test){
    $this->test = $test;
}

BasicAppTest.php:

require ('D:\data\clients\security.ca\web_sites\QRASystems.com\wwwroot\__tests\BasicApp\BasicApp.php');

class BasicAppTest extends PHPUnit_Framework_TestCase{
    protected $testClass;
    protected $backupGlobals = FALSE;
    protected $backupGlobalsBlacklist = array('testString');

    public function SetUp(){
        $this->testClass = new BasicApp;
        $this->testClass->bootstrap();
    }

    public function testGlobal(){
        echo $this->testClass->getTest();
        $this->assertNotNull($this->backupGlobals);
        $this->assertFalse($this->backupGlobals);
        $this->assertNotEmpty($this->testClass->test);
    }

    public function testMethods(){
        $this->testClass->setTest('Goodbye World!');
        echo $this->testClass->getTest();
        $this->assertNotNull($this->backupGlobals);
        $this->assertNotNull($this->testClass->test);
        if (empty($this->testClass->test)) echo 'Method set failed!';
    }
}

testGlobal() 在 $this->assertNotEmpty($this->testClass->test) 上失败,表明 $this->backupGlobals 设置为 FALSE 并且 PHPUnit 仍在备份全局变量。

编辑:我通过进行以下更改来实现此功能 -

BasicAppTest.php:

    protected $backupGlobals = FALSE; <- REMOVED
    protected $backupGlobalsBlacklist = array('testString');  <- REMOVED

配置.php:

global $testString; <- ADDED
$testString = 'Hello world!';

我很惊讶,以前在某个地方没有报道过这一点!


在您的测试用例中,您定义了一个new $backupGlobalsPHPUnit 看不到的属性。由于该属性受到保护,您可以将其设置为false在构造函数中,但 PHPUnit 使用其构造函数来传递有关如何运行测试方法的信息。相反,创建一个phpunit.xml配置文件 http://www.phpunit.de/manual/current/en/appendixes.configuration.html#appendixes.configuration.phpunit设置backupGlobals财产给false.

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

PHPUnit 和全局变量 的相关文章

  • PHP PDO:将数据作为对象获取 - 在调用 __construct 之前分配的属性。它是否正确?

    完整的问题应该是 这是正确的还是我不能指望的错误 为什么这是正确的行为 我一直在更多地使用 PDO 特别是直接将数据提取到对象中 在这样做的过程中我发现了这一点 如果我直接将数据获取到像这样的对象中 STH DBH gt prepare S
  • ajax - 检查用户名是否存在+如果存在则返回消息

    我试图检查用户想要的用户名是否已被使用 而无需发送表单 基本上是用户名字段的模糊 我遇到了一些麻烦 有几个问题 我有我的输入字段加上js
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect
  • 使用 jQuery 将值发送到 $_GET

    我正在使用一个 PHP 脚本 该脚本正在通过 GET 等待两个值 我正在尝试使用 jQuery 传递这两个值 而这正是我不太擅长的地方 这是我得到的代码 有人能指出我正确的方向吗 谢谢 function xrate id rating aj
  • Laravel 作为客户端时,用于身份验证的 JWT 存储在哪里?

    我使用 Laravel 6 和 GuzzleHTTP 7 我可以设法向外部 REST API 发出请求并成功授权并取回令牌 access token FooXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 eyJleHAiOj
  • 保护公用文件夹中的某些文件和文件夹不被查看

    今天我已经为此苦苦挣扎了一段时间 我想要完成的是我需要阻止所有用户访问某些 php 文件和图像以及更多内容 它们位于单独的文件夹中 我正在使用 WAMP 服务器 我不希望用户只能访问该网站 例如 www images crazy cat p
  • 使用 jQuery 和 AJAX 跨域 PHP 调用

    我遇到一个问题 我使用的服务器未配置为允许 PHP 或 CGI 并且我需要使用从该服务器上的表单收到的变量向所有者发送邮件 例如一般查询 反馈表单 有谁知道我如何在配置为使用 PHP 的另一个域上调用一个简单的 PHP 文件 然后执行mai
  • PHP MySQL从2个表中获取数据

    我正在尝试合并数据库中的 2 个表 文件表 id file name file description file url access files 表 id student id file id 这是我的sql代码 当前从文件表中获取所有文
  • Laravel-Excel批量导入

    所以 我有一个 28k 行的 Excel 文件 我想加载它 然后插入数据库 但它刚刚停止 空格处 我尝试减少到 5k 数据 它有效 但速度太慢我也尝试过使用chunk http www maatwebsite nl laravel exce
  • Codeigniter 创建目录(如果不存在)

    嗨 任何人都可以帮我解决这个问题吗 基本上我使用了 codeigniter 的文件上传类 链接是here http ellislab com codeigniter user guide libraries file uploading h
  • is_page() 条件在 AJAX 函数内不起作用

    我正在使用ajax 过滤帖子 我希望 产品 和 常见问题解答 页面的 数组不同 如果这是在 ajax 请求中执行的 则不会设置 is page 您发出请求的页面是之前的请求 您需要在原始页面上设置一些内容以与您的 ajax 请求一起传递 以
  • 设置 Cron 作业在 24 小时后删除文件

    我阅读了所有相关问题 但无法理解它们 我正在使用 Plesk CPanel 来设置 cron 作业 正如大家所建议的那样 我想在 24 小时后删除文件夹中的所有文件 假设我必须每 2 分钟后删除它 这样我就可以检查它是否工作 我有两个选择
  • PHP:如果记录存在则显示 HTML,否则不显示任何内容

    我是 PHP 新手 我正在尝试构建一个小型客户数据库 在我的数据库中 我有一个名为 suspended state 的列 其值可以是 yes 或 no 如果是 我希望它显示 暂停 如果不是 我希望它显示 活动 这是我的代码 但是 无论列是
  • 依赖注入类 - 在哪里存储配置

    当对数据库处理程序等使用依赖注入而不是单例时 最好将配置保存在哪里 即用户名密码主机等 保留在类内部 使用容器类或使用静态配置类或使用文件 我通常将它们保存在网络根目录之外的文件中
  • php:SEO 友好的 url

    我正在开发一个新项目 我想为这个网站创建 SEO 友好的 URL 例如 mysite com first content mysite com second content URL 必须是动态的 这意味着 URL 必须与内容标题相关 我怎样
  • 如何在 PHP 中使用 Amazon 的 API 来搜索书籍? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一款用于图书共享 评论和推荐的 Facebook 应用程序 我搜索了网络 使用我能想到的每个
  • 使用 PHPUnit 测试受保护方法的最佳实践

    我发现有关的讨论你测试私有方法吗 https stackoverflow com questions 105007 do you test private method内容丰富 我决定 在某些类中 我想要受保护的方法 但要测试它们 其中一些
  • 在本地计算机上安装 magento 后,我忘记了管理员密码

    在我的本地计算机上安装 magento 后 我忘记了我提供的管理员密码 我无法登录我的管理区域 如何重置密码 我读过这篇文章http www atwix com magento reset admin password mysql http
  • 使用 PHP 安全连接 MySQL 的最佳方法[重复]

    这个问题在这里已经有答案了 我想了解一下你们认为使用 PHP 连接到 MySQL 数据库的最安全方法 目前我正在做的方式是一个实用程序 PHP 文件 我将其包含在所有其他 PHP 文件的顶部 实用程序 PHP 文件是这样的 有什么建议么 建
  • 如何在 Laravel 5 中手动添加 ClassLoader

    我想通过这个命令将我的类添加到类加载器中 loader new Composer Autoload ClassLoader loader gt addPsr4 test DIR modules test loader gt register

随机推荐

  • 如何在Python中进行二次排序?

    如果我有一个数字列表 4 2 5 1 3 我想先按某个功能对其进行排序f然后对于具有相同值的数字f我希望它按数字的大小排序 这段代码似乎不起作用 list5 sorted list5 list5 sorted list5 key lambd
  • webpack 在react.js 中无法正常工作

    我使用创建了一个 hello world 反应应用程序create react app命令 然后我尝试使用运行相同的文件webpack 但它不能正常工作 比如 ico css文件是not rendering到屏幕上 请帮我解决这个问题 we
  • 在 Observable Angular js 2 中迭代 json 字符串

    以下是我的html代码 tr td c name td td c skill td tr 在我的 json 中 name abc skill xyz 这是可行的 但我需要迭代这个 json 字符串 var obj a 1 b 2 for v
  • 如何在运行时重新转换类?

    我正在尝试修改一个已加载到 JVM 中的类 我找到的解决方案是这样的 将代理附加到 PID 指定的 JVM 例如8191 代码 AttachTest 从 JVM 中已加载的类中找到您要修改的类 例如 8191 使用仪器添加变压器 代码 Ag
  • C++ 进程因状态 3 混乱而终止

    我对编程非常陌生 但在过去一周左右的时间里一直在关注 C 教程并积累了许多 PDF 来帮助我 我在其中或网上找不到任何足够清楚地回答我的问题的内容 请原谅我的新手 相关代码 日志文件 hpp HEADER CLASS INTERFACE F
  • 检索 Linkedin 视频帖子 (ugcPost API) 的缩略图

    我尝试使用 ugcPost api 检索视频帖子的缩略图 但没有成功 我总是检索一个空的缩略图数组 关于文档检索 UGC 帖子 https learn microsoft com en us linkedin marketing integ
  • 什么时候在keras中使用sample_weights合适?

    根据这个question https stackoverflow com questions 43459317 keras class weight vs sample weights in the fit generator 我了解到cl
  • SonarQube:无法停用缺少质量配置文件的规则

    我的 SonarQube 中有一条规则 在搜索列表中没有与其关联的质量配置文件 红色框here https i stack imgur com UHnQG png 当我尝试改变它时我得到这个错误 https i stack imgur co
  • 通过缓动水平滑动 div

    我希望实现一个隐藏 显示 div 其中鼠标输入 div 显示 但以从左到右滑动的方式缓动 另外 我需要页面关注刚刚滑出 可见的新 div 这是我的脚本 关于我需要添加什么的任何想法
  • Delayed_job 锁定但不处理

    我正在尝试解决delayed job 的问题 由于某种原因 我看到很多作业locked by和locked at 但队列中没有任何内容被处理 有什么建议可以解释为什么会发生这种情况或如何让它继续下去吗 我正在使用 Rails 2 3 11
  • AngularJS - ngOptions:如何按组名称然后按标签排序

    假设我有以下形式的数据数组 var data group GroupA label BB group GroupB label DD 我的绑定会是这样的
  • 签署使用 maven- assembly 插件创建的 jar 文件

    我想构建一个程序集然后对其进行签名 我的问题是 jarsigner 不签署程序集 只签署独立的 jar 文件 你能告诉我问题是什么吗 在使用 Ant 多年后 Maven 对我来说似乎很 神奇 我看不到插件如何协作以及相互传递信息的方式 执行
  • HTML 正文中的样式和脚本标记...为什么不呢?

    这与这个问题 https stackoverflow com questions 225828 但不是因为它与电子邮件无关 在许多情况下 尤其是在使用 CMS 或其他人的框架时 嵌入要容易得多
  • 导入错误:没有名为“加密”的模块

    我在 Windows 7 上安装了 python 3 4 当尝试使用 paramiko 时出现此错误 import paramiko File C Python34 lib site packages paramiko 2 0 2 py3
  • 是否应该为已发布的应用程序关闭 NSZombieEnabled?

    With NSZombieEnabled打开它会提供一些防范EXC BAD ACCESS运行时发生的问题 我正在双重努力以确保没有 很少内存泄漏 但我可能会过度释放 所以有NSZombieEnabled打开将有助于防止这种情况 对吗 或者与
  • C# - 正确加载索引彩色图像文件

    所以我创建了一个索引颜色 每像素 8 位 PNG 我已经用 ImageMagick 检查了格式是否正确 我想将它从磁盘加载到System Drawing Bitmap同时保留 8bpp 像素格式 以便查看 和操作 其调色板 但是 如果我创建
  • 将 scikit-learn SVM 模型转换为 LibSVM

    我使用 scikit learn 训练了超过半 TB 的数据的 SVM svc 该模型运行良好 我需要将其移植到 C 但我不想从头开始重新训练 SVM 因为这对我来说花费的时间太长 有没有办法轻松导出 scikit learn 生成的模型并
  • Android:通知操作以消除通知

    我正在尝试创建带有操作按钮的 Android 通知 我已经设置了一个启动活动的设置 但我想要另一个可以取消通知并且不会将用户带到另一个屏幕 活动 不带到我的应用程序的任何部分 的设置 我不想使用 auto cancel true 因为我希望
  • 读取 pandas 数据帧前几行的方法

    有没有内置的使用方法read csv只读第一个n文件的行数而不提前知道行的长度 我有一个大文件 需要很长时间才能读取 有时只想使用前 20 行来获取它的样本 并且不喜欢加载完整的文件并获取它的头部 如果我知道总行数我可以做类似的事情foot
  • PHPUnit 和全局变量

    我正在学习和探索 PHPUnit 与 PHP 5 2 9 的应用程序 并遇到了全局问题 我已将 backupGlobals 设置为 FALSE 包括文档 backupGlobals 已禁用 这似乎不会影响 PHPUnit 备份全局变量的行为