我想在每次测试后重新设置测试数据库,但不知怎么的,我找不到方法。我可以删除每次测试中添加的数据,但我很确定这不是正确的方法。我的测试是这样的:
<?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"
1条答案
按热度按时间j2datikz1#
看在上帝的份上,听从@craigh的建议,去看看foundry
https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#database-reset
他们确实做到了这一点,而且实际上提供了很好的东西,这样您就可以在每个测试用例中构建您的测试数据库。