如何在“测试”环境中启用“开发”包,以便它们在测试期间可用?

FTW*_*FTW 2 php symfony composer-php

我正在配置 symfony 5 项目的环境,在测试测试环境 (APP_ENV = test) 时出现异常,因为它找不到 web-profiler 包。这是正常的,因为它是由 composer 使用 require --dev 安装的。这有点进退两难,因为即使我目前在测试环境中不需要这个包,我在技术上可能会。

更糟糕的是:我需要开发和测试中的学说夹具包;但是要让它也进行测试,我必须“删除--dev”选项,因此也将它投入生产,这很糟糕。

所以我想知道处理这个问题的常用方法是什么?我想这是一个普遍的问题。

yiv*_*ivi 6

只需为多个环境启用捆绑包:

例如:

// config/bundles.php
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class =>
    [
        'dev' => true,
        'test' => true
    ],
Run Code Online (Sandbox Code Playgroud)

您仍然安装 ( require) 带有--dev标志的软件包,这仅意味着在您为生产 ( composer install --no-dev)创建可安装版本时未安装它们。

如果您在测试时需要开发依赖项,那么“测试”环境不能与生产环境相同。要么在生产中安装这些依赖项,但将它们禁用在 上bundles.php,要么接受这些环境中会有细微的差异。

实际上,它们永远不会完全相同。例如,您在开发中需要 phpunit,但在生产中显然不需要。