找不到PHPUnit DbUnit表

时间:2018-06-28 00:25:19

标签: php testing phpunit dbunit database-testing

运行单元测试时出现一个非常奇怪的错误:

  

PDOException:SQLSTATE [42S02]:未找到基表或视图:1146表'test.result'不存在

     

/var/www/html/project1/rami/tests/Data/Models/DataImportTest.php:60

有问题的测试代码(简化为试图隔离问题):

/**
 * @covers \Project1\Rami\Data\Models\DataImport::insertData
 */
public function testInsertData(): void {
    $this->object->insertData(1);

    $sql = 'SELECT request_id
              FROM requests
             WHERE request_id = 1;';

    $queryTable = $this->getConnection()->createQueryTable('result', $sql);
    $expectedTable = $this->createArrayDataSet([
        'result' => [
            [
                'request_id' => '1'
            ]
        ]
    ])->getTable('result');

    static::assertTablesEqual($expectedTable, $queryTable);
}

更奇怪的是,其他使用assertTablesEqual的测试中的断言可以正常运行并通过,只有该测试失败了。当创建期望的表(数据库中不存在)时,PHPUnit似乎正在自省数据库中的一个名为“结果”的表,但是对于任何其他测试,它都没有这样做。

我尝试删除数据库并重新创建它,重新加载开发/测试环境(Vagrant框),甚至通过全新安装MariaDB来重新配置Vagrant框,所有操作均未成功。

Google搜索错误仅显示Laravel相关问题,其他PHP框架中也有少量类似问题,但与测试无关。

据我所知,该实现工作正常,并且在测试数据库上手动运行查询不会导致任何错误。

有什么想法吗?

0 个答案:

没有答案