3

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

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 似乎在创建预期表(数据库中不存在)时自省数据库中名为“result”的表,但对于任何其他测试,它都不会这样做。

我曾尝试删除数据库并重新创建它,重新加载开发/测试环境(Vagrant 盒),甚至使用全新安装的 MariaDB 重新配置 Vagrant 盒,但均未成功。

谷歌搜索该错误仅显示 Laravel 相关问题,在其他 PHP 框架中存在少量类似问题,但与测试无关。

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

有任何想法吗?

4

0 回答 0