Добрый день, подскажите пожалуйста какие существуют подходы если нужно протестировать части веб-приложения которые работают с базой данных изменяя ее содержимое, но которые не меняют структуру таблиц
Скрипт. Функция (метод) выполняют какие-либо реальные действия с данными в БД. Тестовый скрипт затем выполняет выборку проверяемых данных из БД, сверяет их с ожидаемыми и выводить результат проверки. После теста, изменённые данные возвращают в исходное состояние или удаляют.
Вместо драйвера (или любого механизма, который выполнят непосредственного взаимодействие с БД), используется его имитационный (mock) вариант, с преднастроенными результатами для конкретных SQL запросов. Например:
объектБД = инициироватьЛожноеПодключениеБД;
объектБД->добавитьЛожныйЗапрос(
'SELECT name FROM users WHERE id = ?', # для данного запроса
[ ['Иван'] ] # выдать такой результат
);
функция получитьИмяПользователя (номерПользователя) {
...
# объектБД - это "ложный" объект для работы с БД, который лишь
# делает вид, что взаимодействует с БД
выборка = объектБД->выполнить(
'SELECT name FROM users WHERE id = ?', номерПользователя
);
...
возвратить выборка[0][0];
}
В тесте:
равно(получитьИмяПользователя(), "Иван", "имя пользователя Иван");
зависит от фреймворка. Часто ORM позволяет накрутить объекты «в памяти», без обращения к БД. Часто можно использовать подменную SQLite-базу, которая тоже будет в памяти и работать быстро.
А вообще, коль скоро вопрос о юнит-тестах — юниты, отвечающие за работу с моделями, должны быть отделены от собственно базы данных (например, тем же ORM).
Если не отделены — то это не юнит, а интеграционное тестирование %)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Требуется создать свой порядок сортировки вида: 1,2,3,null,null,null,nullПробовал создать дополнительное поле, и пронумеровать нужное
Не могу понять как работает функция GetKeyboardStateВроде как должна определять состояние всех клавиш, но правильность результата зависит от места...
Пишу под ASPNET MVC Framework веб-сервис, который должен работать с СУБД Oracle