Symfony2:在自定义环境中运行自动测试


Symfony2: running automated tests in a custom environment

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

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

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

"会话 ID 太长或包含非法字符,有效字符为 a-z、A-Z、0-9"

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

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

有什么办法解决这个问题吗?

谢谢

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

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