php - phpUnit 中的假 $_SERVER 变量

标签 php phpunit

我对 phpUnit 还是个新手,我不能使我的(非常简单的)测试工作。

<?php

use PHPUnit\Framework\TestCase;

class userTest extends TestCase {
    public function testTrue() {
        $this->assertTrue(true);

        //  This line wont work without autloader.php
        $user = new User();
    }
}

问题是我需要从 autoloader.php 加载我所有的类:

<?xml version="1.0" encoding="UTF-8"?>
    <phpunit bootstrap="inc/autoload.php"></phpunit>

但是我在那些类中有很多 $SERVER 变量,比如

$_SERVER['REMOTE_ADDR']
$_SERVER['HTTPS']
$_SERVER['SERVER_NAME']
$_SERVER['DOCUMENT_ROOT']
$_SERVER['REQUEST_URI']

这是我得到的错误:

Notice: Undefined index: REMOTE_ADDR in /Applications/MAMP/htdocs/sakkadentrainer/classes/App.php on line 674

如何让这些变量起作用?我更愿意将它们“伪造”为 phpunit.xml 文件中的 env.variables,但我不知道这是否可能。

谢谢你的帮助!

我的设置: php 7.1.2、phpUnit 6.1.1、macOs Mojave、MAMP

解决方案: https://phpunit.de/manual/6.5/en/appendixes.configuration.html#appendixes.configuration.php-ini-constants-variables

最佳答案

引用文档,您可以Setting PHP INI settings, Constants and Global Variables ,例如:

<php>
  <server name="REMOTE_ADDR" value="127.0.0.1"/>
</php>

希望对你有帮助

关于php - phpUnit 中的假 $_SERVER 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281250/

相关文章:

php - Sublime Text 3 PHP 单元

PhpUnit 测试 stub 方法多次返回

php - 如何删除基于 MySQL 数据库值填充的 html 表中的行?

php - 在这种情况下,PHP 是否会泄漏内存?

Php通过代理请求

php - 尝试使用 php 脚本更新 MySQL 数据库(上传文件)

php - 错误 : Unable to find the controller for path "/login_check". 路由配置错误。 (LexikJWTAuthentication)

Symfony2 单元测试服务

php - 如何让 PHPUnit 忽略文件模式?

javascript - 如何自动缩放mPDF中的SVG对象以适合页面的其余部分?