使用不同的代码环境

woo*_*ate 11 php unit-testing codeception

我正在使用Codeception进行一些API测试.我们的想法是确保每个API调用都返回所需格式的预期响应代码和JSON对象.

我遇到的问题是我需要使用不同的URL,具体取决于服务器localhost,测试服务器还是生产服务器.

我无法使用值,$_SERVER['SERVER_NAME']因为测试不是通过Web浏览器运行的.

http://codeception.com/docs/07-AdvancedUsage#Environments中,他们解释了可以通过修改配置文件来设置某些环境.该文档没有解释如何修改配置文件以在您自己的单元测试中使用它.

我还想设置一些环境,如local,test,production然后,我的单元测试类里面,才知道什么URLs用.每个环境都有不同的URL.

我已经阅读了文档但我无法找到方法.

你知道如何实现我的需求吗?

hid*_*dro 11

确保您的代码版本至少为1.8,因为环境仅支持1.8.

下面是我们的代码设置api.suite.yml,使用PhpBrowser和REST模块指定,用于BDD和API测试:

...
env:
    local:
        modules:
            config:
                PhpBrowser:
                    url: http://local.example.com/
                REST:
                    url: http://local.example.com/v1/
    integration:
        modules:
            config:
                PhpBrowser:
                    url: http://integration.example.com/
                REST:
                    url: http://integration.example.com/v1/
    staging:
        modules:
            config:
                PhpBrowser:
                    url: http://staging.example.com/
                REST:
                    url: http://staging.example.com/v1/
Run Code Online (Sandbox Code Playgroud)

运行codecept命令时,需要提供一个--env选项来指定测试应使用的环境.