【问题标题】:Fake $_SERVER variables in phpUnitphpUnit 中的假 $_SERVER 变量
【发布时间】:2019-04-16 07:13:03
【问题描述】:

我还是 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

【问题讨论】:

标签: php phpunit


【解决方案1】:

参考文档,可以Setting PHP INI settings, Constants and Global Variables,例如:

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

希望有帮助

【讨论】:

  • 完美!谢谢
  • 其他:我现在收到此错误:错误:找不到类“NumberFormatter”。这是由于未加载的 php 扩展 (php_intl.dll)。我试图在 phpunit.xml 中添加它: 但它不起作用...
  • 可能你应该在php.ini中添加它
  • 哪个php.ini?来自 MAMP 还是 phpUnit 有自己的 php.ini?
  • 检查此答案stackoverflow.com/a/30047099/2270041 以便找到要编辑的正确文件
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多