3

我正在尝试在自定义环境中为 REST API 运行 Symfony 2 PHP 单元测试,而不是默认的“测试”环境。

目的是能够在任何环境(例如 int、prod)中部署其余 API 后进行快速健全性检查

在创建新的内核/客户端时,我设法将环境传递给 WebTestCase 类。我的问题是我现在收到以下错误:

“会话id过长或包含非法字符,有效字符为az、AZ、0-9”

我可以通过在 config.[targetenvironment].yml 中将会话存储更改为文件系统来解决这个问题,但我不想在 prod 中使用文件系统存储。

framework:
    test: ~
    session:
        storage_id: session.storage.filesystem

有没有办法解决这个问题?

谢谢

4

1 回答 1

0

PHPUnit 手册的第 11 章中有一节是关于模拟文件系统的。这基本上会拦截所有文件系统调用,因此请确保您运行的测试没有副作用。如果您直接调用函数,这应该可以解决您的问题(即,如果运行 PHPUnit 的 php 实例也是运行您的代码的实例)。

但是,如果您的调用通过 Web 服务器,则 PHPUnit 配置无法控制远程环境。在这种情况下,您可以尝试一个特殊的 Apache 配置,该配置根据客户端 IP 地址和/或用户代理字符串设置环境变量,然后在您的代码中使用该环境变量来覆盖默认会话存储,或者您需要的任何其他内容.

于 2012-06-21T23:55:07.017 回答