Я выполняю некоторые базовые модульные тесты для служебной функции, которую я создал несколько лет назад, но она включает в себя доступ к массиву $_SERVER
.
Поскольку мои модульные тесты запускаются из командной строки, я должен вручнуюустановить значения массива самостоятельно.
Это хорошо работает с использованием GitLab Runners, потому что для файла .gitlab-ci.yml
я просто делаю что-то вроде:
before_script:
- export SERVER_PORT="80"
- export SERVER_NAME="gitlab"
Мой тест в настоящее время не может проверить всеоператоры из этой функции, поскольку она проверяет значение $_SERVER['SERVER_NAME']
.
Модульный тест
public function testGetEnvironment() {
shell_exec('set SERVER_NAME="localhost"');
$this->assertEquals("localhost", $this->util->get_environment());
shell_exec('set SERVER_NAME="gitlab"');
$this->assertEquals("gitlab", $this->util->get_environment());
}
ПРИМЕЧАНИЕ: Мне пришлось использовать set
, пока я накомпьютер под управлением Windows, в то время как наш GitLab Runner находится на компьютере с Linux, поэтому я использовал export
для файла gitlab-ci.yml
.
Я ожидал, что этот тест пройден, но похоже на команду для установки переменной среды с помощьюshell_exec
не меняет значение вообще.Я все еще получаю значение из того, что было определено из файла YAML.
Обновление
Вот сообщение об ошибке:
1) UtilTest::testGetEnvironment
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'localhost'
+'gitlab'