Я получаю очень странную ошибку при запуске модульного теста:
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 box) и даже повторно подготовить Vagrant box с новой установкой MariaDB, но все безуспешно.
Поиск ошибки в Google показывает только проблемы, связанные с Laravel, с небольшим количеством подобных проблем в других средах PHP, но ничего не связанного с тестированием.
Насколько я могу судить, реализация работает отлично, и выполнение запроса вручную в тестовой базе данных не вызывает ошибок.
Есть идеи?
Задача ещё не решена.
Других решений пока нет …