Перейти к основному содержимому

Тестирование прямых запросов к СУБД. 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, не прибегая к сложным и громоздким решениям. Это делает процесс разработки и тестирования более гибким и эффективным.