【发布时间】:2018-09-18 19:25:49
【问题描述】:
我正在对几年前创建的实用程序函数进行一些基本的单元测试,但它涉及访问$_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 机器上,所以我在 gitlab-ci.yml 文件上使用了export。
我期待这个测试通过,但似乎使用shell_exec 设置环境变量的命令根本没有改变值。我仍然从 YAML 文件中定义的值中获取值。
更新
这是失败消息:
1) UtilTest::testGetEnvironment
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'localhost'
+'gitlab'
【问题讨论】:
标签: php unit-testing environment-variables gitlab shell-exec