我正在对我多年前做的一个实用函数做一些基本的单元测试,但是它涉及到访问
$_SERVER
数组。
因为我的单元测试是从命令行运行的,所以我必须自己手动设置数组的值。
使用Gitlab跑步者效果很好,因为
.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运行程序在Linux机器上,所以我使用
export
上
gitlab-ci.yml
文件。
我本来希望通过此测试,但似乎是使用命令设置环境变量
shell_exec
根本不会改变价值。我仍然从yaml文件中定义的内容中获取值。
更新
以下是失败消息:
1) UtilTest::testGetEnvironment
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'localhost'
+'gitlab'