【问题标题】:How to make Symfony / Panther use the test-environment in tests?如何让 Symfony / Panther 在测试中使用测试环境?
【发布时间】:2019-02-15 16:46:14
【问题描述】:

使用 Panther-Client 执行功能测试时,在后台启动的网络服务器不使用“测试”环境。相反,它似乎使用了 .env 文件中提供的参数(当前指向“dev”环境),因此我不能使用测试数据库进行功能测试。

从技术上讲,我可以理解这种情况,因为启动的 php-webserver 对测试客户端使用的测试环境一无所知,只能看到 .env 文件。

是否有任何我忽略的选项可以告诉 php-webserver 在测试环境中启动,或者是否有人找到了解决此问题的其他方法?

(selenium-tests 似乎也存在同样的问题,但我也没有找到解决方案。)

【问题讨论】:

  • 嘿,如果您使用的是 symfony 4.2,您可以升级到定义 .env 的新方法:symfony.com/blog/… 嘿,您是否尝试过更新 symfony 以使用新的 .env 格式?这意味着 .env 文件不包含任何信息,它只是一个模板,然后您可以使用本地设置创建一个 .env.local 文件,并使用您的测试设置创建一个 .env.test 文件。这样,当我运行我的黑豹测试时,就会使用正确的环境

标签: symfony4 functional-testing symfony-panther


【解决方案1】:

我可以通过创建一个特定的 Panther 环境来解决这个问题:

将此行添加到.env.test:

PANTHER_APP_ENV=panther

然后创建一个文件.env.panther 并将您的数据库设置添加到该文件中:

DATABASE_URL="mysql://user:password@mariadb:3306/test"

【讨论】:

    【解决方案2】:

    感谢您为我指明了这个方向。从那里我找到了对更改负责的拉取请求:

    https://github.com/symfony/recipes/pull/481

    以及更新现有项目的文档

    https://symfony.com/doc/current/configuration/dot-env-changes.html

    一旦我相应地更新了我的项目,从 pather 启动的网络服务器现在使用测试环境。
    我必须弄清楚他们如何准确地告诉在一个单独的进程中启动的网络服务器它应该使用测试环境——但就目前而言,它按预期工作。 :-)

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多