如何将PHPUnit指向测试数据库?

时间:2018-01-03 16:01:44

标签: php symfony doctrine phpunit

我正在使用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&amp;serverVersion=5.7" />
</php>

测试数据库应该已经设置了所有表(我已经通过控制台验证了这一点)。我还需要做些什么来正确指出PHPUnit吗?

作为参考,我使用Symfony的KernelTestCase编写了测试,因此我的测试扩展了Symfony \ Bundle \ FrameworkBundle \ Test \ KernelTestCase类。

0 个答案:

没有答案