Предположим, я хочу, чтобы проверить согласованность базы данных в трех состояниях:Многоразовые тесты в PHPUnit
Когда данные были вставлены - Я хочу, чтобы убедиться, что определенное количество строк были вставлены в таблицы базы данных.
Когда данные были обновлены - Я хочу повторять строки теста количество (сумма должна быть такой же, как после вставки)
Когда данные были удалены - Я хочу, чтобы убедиться, что все данные были удалены.
Также, когда я вставляю или обновляю, некоторые файлы (изображения) могут быть загружены на сервер, а пути к файлам будут сохранены в базе данных. Поэтому я также хотел бы проверить, соответствует ли количество файлов количеству строк в таблице файлов базы данных.
Другими словами, я хочу повторно использовать два метода: testRowsAmountOnAddUpdate
и testFilesAmountOnAddUpdate
после вставки и обновления.
Каков наилучший способ организовать мой код? Должен ли я использовать светильники?
Как правило, вы не будете беспокоиться о фактическом тестировании базы данных в своем коде и высмеивать вызовы базы данных. Это позволяет вашему коду продолжать, как если бы строки были добавлены или не были основаны на возврате. В конце концов, вы проверяете свой код, а не базу данных. Однако, если вы хотите протестировать свою библиотеку, которая взаимодействует с базой данных, то вы хотите сделать проверки, о которых вы говорите. Для этого требуется расширение DBUnit для PHPUnit, поэтому вы можете работать с базой данных в модульных тестах для своих библиотек. IE: Не загружайте данные в БД для запроса и подсчета возвращенных записей. –
Позвольте мне объяснить весь процесс, который я переживаю. Прежде всего - я использую php-структуру. Структура имеет ORM-модели, которые помогают мне получить доступ к данным в базе данных. Также в настройках базы данных хранятся настройки подключения к БД. Соединение DB инициализировано в исходном коде. –
Второй - У меня есть внешний источник данных. Я загружаю данные из этого источника, разбираю его и применяю к моделям ORM.В этот момент разница между данными внешнего источника и данными локальной базы данных может быть описана тремя состояниями: новые строки поступают из внешнего источника - я должен вставить его в свою БД, в источнике есть строки - я должен обновлять строки в моем DB (в основном, удалить unrelevent и вставлять новые), и если некоторые строки существуют в моей локальной базе данных, и они не поступают из источника - я должен удалить их из своей БД. Итак, у меня есть рабочий, который все это делает. –