Тестирование прямых запросов к СУБД. ADO.RecordSet
При тестировании прямых запросов к СУБД часто возникает потребность в эмуляции работы с объектом ADO.RecordSet. Этот объект используется для чтения данных из результатов SQL-запросов, но его прямое использование в тестах затруднено из-за отсутствия возможности программно создать и настроить его. Для решения этой проблемы была разработана заглушка (stub), которая имитирует интерфейс ADO.RecordSet и позволяет упростить тестирование.
Для упрощения тестирования была разработана заглушка ADO.RecordSet, которая реализует интерфейс этого объекта и предоставляет методы для настройки данных. Заглушка включена в библиотеку YAxUnit и доступна через метод ЮТест.Данные().ADORecordSet.
Возможности заглушки
Заглушка для ADO.RecordSet предоставляет следующие возможности:
Реализация свойств и методов ADO.RecordSet
-
Свойства:
EOF— флаг конца набора данных.BOF— флаг начала набора данных.AbsolutePosition— текущая позиция курсора.RecordCount— количество записей в наборе данных.Fields— коллекция полей (колонок).
-
Методы:
MoveFirst()— перемещение курсора на первую запись.MoveNext()— перемещение курсора на следующую запись.Close()— закрытие набора данных.Fields()— получение значения поля по имени.EOF()— проверка, достигнут ли конец набора данных.BOF()— проверка, находится ли курсор в начале набора данных.
Методы настройки
Заглушка также предоставляет методы настройки, реализованные в виде текучих выражений (fluent API), что делает процесс настройки данных более удобным и читаемым.
-
Создание заглушки:
ЮТест.Данные().ADORecordSet()— принимает информацию о колонках (имена и типы данных).
-
Добавление данных:
Добавить()— добавляет новую строку значений в набор данных.
Пример использования заглушки
Пример использования заглушки для тестирования кода, работающего с ADO.RecordSet:
Процедура ТестADORecordSet()
// Создаем заглушку ADO.RecordSet с двумя колонками: "ID" и "Name"
Заглушка = ЮТест.Данные().ADORecordSet("ID", "Name");
// Добавляем данные в заглушку
Заглушка.Добавить(1, "Item 1")
.Добавить(2, "Item 2")
.Добавить(3, "Item 3");
// Перемещаемся на первую запись
Заглушка.MoveFirst();
// Проверяем значения полей
ЮТест.ОжидаетЧто(Заглушка.Fields("ID")).Равно(1);
ЮТест.ОжидаетЧто(Заглушка.Fields("Name")).Равно("Item 1");
// Перемещаемся на следующую запись
Заглушка.MoveNext();
// Проверяем значения полей
ЮТест.ОжидаетЧто(Заглушка.Fields("ID")).Равно(2);
ЮТест.ОжидаетЧто(Заглушка.Fields("Name")).Равно("Item 2");
// Проверяем количество записей
ЮТест.ОжидаетЧто(Заглушка.RecordCount).Равно(3);
КонецПроцедуры
Заключение
Использование заглушки для ADO.RecordSet значительно упрощает процесс тестирования кода, работающего с прямыми запросами к СУБД. Благодаря возможностям, предоставляемым библиотекой YAxUnit, теперь можно легко настраивать данные и эмулировать поведение ADO.RecordSet, не прибегая к сложным и громоздким решениям. Это делает процесс разработки и тестирования более гибким и эффективным.