12

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

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

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

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

我想在我的单元测试类中设置一些环境,例如local, testproduction然后知道URLs要使用什么。每个环境都有不同的 URL。

我已经阅读了文档,但我找不到这样做的方法。

你知道有什么方法可以达到我的需要吗?

4

1 回答 1

14

确保您的 codeception 版本至少为 1.8,因为仅从 1.8 开始支持环境。

下面是我们的代码接收设置,在 中指定api.suite.yml,为 BDD 和 API 测试启用了 PhpBrowser 和 REST 模块:

...
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/

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

于 2014-02-25T16:06:41.507 回答