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