Symfony Codeception 功能测试:未找到环境变量

Geo*_*ock 7 functional-testing symfony codeception symfony4

我在新的 Symfony 4 项目中使用 Codeception v2.4.1 和 PHPUnit 7.1.3。

\n\n

我创建了一个功能测试,并尝试运行它,但收到错误:\n./vendor/bin/codecept run function

\n\n
There was 1 error:\n\n---------\n1) CustomerControllerCest: Customers on index\n Test  tests/functional/Controller/Internal/CustomerControllerCest.php:customersOnIndex\n\n  [Symfony\\Component\\DependencyInjection\\Exception\\EnvNotFoundException] \nEnvironment variable not found: "CORS_ALLOW_ORIGIN".\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个配置了此环境的 phpunit.xml 文件:

\n\n
 <php>\n        <ini name="error_reporting" value="-1" />\n        <env name="KERNEL_CLASS" value="App\\Kernel" />\n        <env name="APP_ENV" value="test" />\n        <env name="APP_DEBUG" value="1" />\n        <env name="APP_SECRET" value="191a5940854807ee081eaa57aff30562" />\n        <env name="SHELL_VERBOSITY" value="-1" />\n        <!-- define your env variables for the test env here -->\n        <env name="CORS_ALLOW_ORIGIN" value="^https?://localhost:?[0-9]*$" />\n    </php>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试使用 .env.test,并包含相同的变量:

\n\n
CORS_ALLOW_ORIGIN=^https?://localhost:?[0-9]*$\n
Run Code Online (Sandbox Code Playgroud)\n\n

我签入了 function.suite.yml 并将我的环境设置为测试:

\n\n
actor: FunctionalTester\nmodules:\n    enabled:\n        - Symfony:\n            app_path: \'src\'\n            environment: \'test\'\n            em_service: \xe2\x80\x98doctrine.orm.entity_manager\xe2\x80\x99\n#        - Doctrine2:\n#            depends: Symfony\n        # add a framework module here\n        - \\Helper\\Functional\n
Run Code Online (Sandbox Code Playgroud)\n\n

不确定问题出在哪里。是否有一个额外的配置可以告诉 codeception 在哪里查找这些环境变量?

\n

小智 0

我使用过CORS_ALLOW_ORIGIN="*" php codecept run并且它解决了我的问题。