运行单元测试时出现一个非常奇怪的错误:
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框架中也有少量类似问题,但与测试无关。
据我所知,该实现工作正常,并且在测试数据库上手动运行查询不会导致任何错误。
有什么想法吗?