我正在使用Symfony 2.6.9,Doctrine 2.3.6和PHPUnit 3.7.38。我正在尝试为与DB交互的服务编写单元测试。我已经在我的开发环境中成功运行了代码,但是当尝试在PHPUnit中运行类似的代码时,我收到以下错误:
有1个错误:
1)\ Tests \ Service \ ProcessorServiceTest :: testProcessor Doctrine \ DBAL \ DBALException:执行时发生异常 'INSERT INTO类别(名称,描述,类型)VALUES(?,?,?)':
SQLSTATE [HY000]:一般错误:1没有这样的表:categories
/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:47 /api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php:71 /api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:598 /api/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:263 /api/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:929 /api/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:318 /api/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:355 //Tests/Service/ProcessorServiceTest.php:34
由PDOException引起:SQLSTATE [HY000]:一般错误:1没有这样的 表:类别
我创建了一个测试数据库,它是我的开发数据库(两个MySQL)的副本,但怀疑PHPUnit没有正确指向该数据库。我的phpunit.xml中已经有以下行:
<php>
<env name="DATABASE_URL" value="mysql://USERNAME:PASSWORD@DATABASEURL/test?charset=utf8mb4&serverVersion=5.7" />
</php>
测试数据库应该已经设置了所有表(我已经通过控制台验证了这一点)。我还需要做些什么来正确指出PHPUnit吗?
作为参考,我使用Symfony的KernelTestCase编写了测试,因此我的测试扩展了Symfony \ Bundle \ FrameworkBundle \ Test \ KernelTestCase类。