gpt4 book ai didi

symfony - 如何在 Symfony 4 中为测试环境设置数据库

转载 作者:行者123 更新时间:2023-12-02 10:49:34 24 4
gpt4 key购买 nike

我对如何在 symfony 4 中为测试环境设置数据库感到困惑。我曾经在 symfony 3 及以下版本的 config_test.yml 文件中处理它。

最佳实践是什么?我应该在 config/packages/test 中重新创建 doctrine.yaml 文件吗?

文档提到了如何通过编辑 phpunit 配置来使用数据库运行功能测试:

<phpunit>
<php>
<!-- the value is the Doctrine connection string in DSN format -->
<env name="DATABASE_URL" value="mysql://USERNAME:PASSWORD@127.0.0.1/DB_NAME" />
</php>
<!-- ... -->
</phpunit>

但是它不能满足我的需求,因为我需要能够将架构/加载装置更新到测试环境。

最佳答案

对于您想要做的事情,我通常创建一个自定义测试 Bootstrap ,它运行所需的学说命令,看起来像这样:

# tests/bootstrap.php
<?php

if (isset($_ENV['BOOTSTRAP_RESET_DATABASE']) && $_ENV['BOOTSTRAP_RESET_DATABASE'] == true) {
echo "Resetting test database...";
passthru(sprintf(
'php "%s/../bin/console" doctrine:schema:drop --env=test --force --no-interaction',
__DIR__
));
passthru(sprintf(
'php "%s/../bin/console" doctrine:schema:update --env=test --force --no-interaction',
__DIR__
));
passthru(sprintf(
'php "%s/../bin/console" doctrine:fixtures:load --env=test --no-interaction',
__DIR__
));
echo " Done" . PHP_EOL . PHP_EOL;
}
require __DIR__.'/../vendor/autoload.php';

在我的 phpunit.xml.dist 中,我添加了环境变量:

<env name="DATABASE_URL" value="sqlite:///%kernel.project_dir%/var/test.db"/>
<env name="BOOTSTRAP_RESET_DATABASE" value="1" />

如果您想查看一个基本示例,我有一个 Symfony 4 演示项目,它使用它来设置一个基本测试数据库,供使用 Web 测试用例的功能测试使用。您可以在 GitHub 上找到它:dbrumann/product-api

关于symfony - 如何在 Symfony 4 中为测试环境设置数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com