gpt4 book ai didi

mysql - 如何确保单元测试 Doctrine 尝试加载到与开发相同的数据库?

转载 作者:行者123 更新时间:2023-11-29 09:34:30 28 4
gpt4 key购买 nike

我想在 Symfony 中进行一些单元测试,并尝试测试已经可以工作的东西,如下所示:

<?php namespace App\Tests\Api\Controller;

use Symfony\Component\HttpFoundation\Request;
use App\Controller\Admin\ProductAdminController;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

/**
* Class ProductsAdminControllerTest
* @package App\Tests\Api\Controller
*/
class ProductsAdminControllerTest extends WebTestCase
{

protected function setUp()
{
$kernel = static::createKernel();
$kernel->boot();
static::$container = $kernel->getContainer();
/*$this->_em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
$this->_em->beginTransaction();*/
}

public function testSearchProductsEmpty()
{
$request = new Request([], [
"product_name" => ""
]);
$controller = new ProductsAdminController();
$controller->setContainer(static::$container);
$controller->getProducts($request);
//$products = json_decode($controller->getProducts($request));
$this->assertEquals(1, 1);
}
}

当然,在我克服当前的问题后,这将被修改,即无论我做什么,我都会得到错误

Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES)

当然,我的开发环境连接的数据库具有不同的凭据,我想确保我的单元测试使用相同的凭据。如何实现这一目标?

最佳答案

如果您想针对不同的环境使用不同的连接参数,可以通过在 config/packages/{env}/doctrine.yaml 中创建文件来覆盖配置

为了进行测试,您可以创建 config/packages/test/doctrine.yaml

doctrine:
dbal:
# configure these for your database server
url: 'mysql://db_user4test:db_password4test@host4test:3306/dbname4test'

phpunit 将使用此配置。

否则您可以创建 .env.test 并覆盖配置 ( Customizing Database URL / Environment Variables )

[编辑] @LajosArpad 建议的另一种方法是添加 phpunit.xml.dist:

<env name="DATABASE_URL" value="mysql://db_user4test:db_password4test@host4test:3306/dbname4test" />

参见Changing Database Settings for Functional Tests

关于mysql - 如何确保单元测试 Doctrine 尝试加载到与开发相同的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57963365/

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