symfony 测试结束时重置数据库

x759pob2  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(119)

我想在每次测试后重新设置测试数据库,但不知怎么的,我找不到方法。我可以删除每次测试中添加的数据,但我很确定这不是正确的方法。我的测试是这样的:

<?php

declare(strict_types=1);

namespace Tests\Unit\Entity;

use App\Repository\UserRepository;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Tests\Shared\Factory\UserFactory;

final class UserTest extends KernelTestCase
{
    public function testGettersReturnCorrectData(): void
    {
        self::bootKernel();

        /** @var UserRepository $repo */
        $repo = self::getContainer()->get(UserRepository::class);
        
        $user = UserFactory::createUser();
        $repo->add($user, true);
        $this->assertSame($user->getEmail(), UserFactory::EMAIL);
        $this->assertSame($user->getPassword(), UserFactory::PASSWORD);
        $this->assertSame($user->getReferralCode(), UserFactory::REFERRAL_CODE);
    }
}

新创建的用户保留在数据库中。我使用MySQL测试数据库,因为我的生产数据库将是MySQL,不想因为不同的数据库而达到一些角落的情况。如果需要,这是我的环境测试。

# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots
DATABASE_URL="mysql://root:toma123@127.0.0.1:3306/api?serverVersion=5.7&charset=utf8mb4"
j2datikz

j2datikz1#

看在上帝的份上,听从@craigh的建议,去看看foundry
https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#database-reset
他们确实做到了这一点,而且实际上提供了很好的东西,这样您就可以在每个测试用例中构建您的测试数据库。

相关问题