Я получаю очень странную ошибку при запуске модульного теста:
PDOException: SQLSTATE [42S02]: базовая таблица или представление не найдено: 1146 Таблица 'test.result' не существует
/ вар / WWW / HTML / Проект1 / Рами / тесты / Data / Модели / 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 box) и даже заново подготовить Vagrant box с новой установкой MariaDB, но все безуспешно.
Поиск в сообщении об ошибке показывает только проблемы, связанные с Laravel, с небольшим количеством подобных проблем в других средах PHP, но ничего не относится к тестированию.
Насколько я могу судить, реализация работает нормально, и выполнение запроса вручную в тестовой базе данных не вызывает ошибок.
Есть идеи?