Ошибка PHPUnit "undefined index: HTTP_HOST"

Я объявил HTTP_HOST, как показано ниже.

public function testReadUser() {

    $_SERVER['HTTP_HOST'] = "x.y";
    .
    .
    .
}

Несмотря на это, phpunit дает ошибку индекса undefined. Почему?

Ответ 1

В вашем файле phpunit.xml вы можете установить переменные сервера. Добавьте элемент php под корнем phpunit:

<phpunit>
    <php>
        <server name='HTTP_HOST' value='http://localhost' />
    </php>
</phpunit>

Для получения дополнительной информации см. документы.

Ответ 2

Это дает вам эту ошибку, потому что вы выполняете тесты через интерфейс командной строки (CLI). CLI не может получить эту информацию, поскольку запросы HTTP не поступают через HTTP.

Ответ 3

В методе тестирования вы можете объявить значение (необходимое для вашего тестирования).

Например:

function testMethod(){
$_SERVER['yourvar']='yourvalue';
...your code making the request via phpunit to the method you are testing
}

Объявив $_SERVER в вашем тестовом методе, он будет доступен для тестируемого метода. Он работает и для $_POST и $_GET, если вам нужны эти значения.