如何使用 Doctrine Fixture 为 PHP 单元测试加载测试数据库?

How to use Doctrine Fixture to load test database for PHP unit testing?

我正在尝试设置一个数据库环境来测试我的 Doctrine ORM 实体 类,而不更改我的真实数据库。

我关注了 Symfony's documentation,但是当我 运行 php bin/console doctrine:fixtures:load 我收到警告:

Careful, database "graph" will be purged. Do you want to continue? (yes/no) [no]:

尽管我已经在我的 .env.test 文件中设置了一个环境变量:

DATABASE_URL=mysql://testUser:testPassword@127.0.0.1/graph_test

编辑:这里是整个 .env.test 文件:

# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther

# Database test
DATABASE_URL=mysql://testUser:testPassword@127.0.0.1/graph_test

我试图更改我的 test/bootstrap.php 文件,但我收到相同的警告。

有没有办法让 doctrine 从 .env.test 文件中获取 DATABASE_URL 值?任何帮助将不胜感激。

PS 不需要一个以上的测试.env文件。

原则测试包括 运行ning 迁移,以便每个测试在数据库中拥有相同的数据 运行。

从您发布的页面...

Resetting the Database Automatically Before each Test¶

这将导致消息Careful, database ... will be purged.这是警告,不是错误。

当您要加载配置时,请确保它已在 .env.local 中定义,或者如果您使用的是 test 等自定义环境,请将 --env=test 参数添加到您的命令中

  php bin/console doctrine:fixtures:load --env=test
  php bin/console server:run --env=test

如果你使用php bin/console doctrine:fixtures:load --env=test你只会影响你的测试数据库。