我正在尝试在自定义环境中为REST API运行Symfony 2 PHP单元测试,而不是默认的“测试”环境。
目的是在任何环境(例如int,prod)中部署其余API后能够快速进行健全性检查
在创建新的内核/客户端时,我设法将环境传递给WebTestCase类。 我的问题是我现在收到以下错误:
“会话ID太长或包含非法字符,有效字符为a-z,A-Z,0-9”
我可以通过在config。[targetenvironment] .yml中将会话存储更改为文件系统来解决这个问题,但我不想在prod中使用文件系统存储。
framework:
test: ~
session:
storage_id: session.storage.filesystem
有没有解决这个问题的方法?
由于
答案 0 :(得分:0)
在PHPUnit manual的第11章中,有一节mocking the filesystem。这基本上拦截了所有文件系统调用,因此确保您运行的测试没有副作用。如果您直接调用函数(即运行PHPUnit的php实例也是运行代码的实例),这应该可以解决您的问题。
但是,如果您的调用是通过Web服务器进行的,那么PHPUnit配置无法控制远程环境。在这种情况下,您可以尝试一种特殊的Apache配置,该配置基于clients IP address和/或user-agent string设置环境变量,然后在您的代码中使用该环境变量来覆盖默认会话存储或其他任何内容你需要。