-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
355 additions
and
99 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
documentation/docs/features/mocking/stubs/ado-recordset.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Тестирование прямых запросов к СУБД | ||
|
||
При тестировании прямых запросов к СУБД часто возникает потребность в эмуляции работы с объектом `ADO.RecordSet`. Этот объект используется для чтения данных из результатов SQL-запросов, но его прямое использование в тестах затруднено из-за отсутствия возможности программно создать и настроить его. Для решения этой проблемы была разработана заглушка (stub), которая имитирует интерфейс `ADO.RecordSet` и позволяет упростить тестирование. | ||
|
||
Для упрощения тестирования была разработана заглушка `ADO.RecordSet`, которая реализует интерфейс этого объекта и предоставляет методы для настройки данных. Заглушка включена в библиотеку YAxUnit и доступна через метод [`ЮТест.Данные().ADORecordSet`](/api/ЮТТестовыеДанные#adorecordset). | ||
|
||
## Возможности заглушки | ||
|
||
Заглушка для `ADO.RecordSet` предоставляет следующие возможности: | ||
|
||
### Реализация свойств и методов `ADO.RecordSet` | ||
|
||
- **Свойства:** | ||
- `EOF` — флаг конца набора данных. | ||
- `BOF` — флаг начала набора данных. | ||
- `AbsolutePosition` — текущая позиция курсора. | ||
- `RecordCount` — количество записей в наборе данных. | ||
- `Fields` — коллекция полей (колонок). | ||
|
||
- **Методы:** | ||
- `MoveFirst()` — перемещение курсора на первую запись. | ||
- `MoveNext()` — перемещение курсора на следующую запись. | ||
- `Close()` — закрытие набора данных. | ||
- `Fields()` — получение значения поля по имени. | ||
- `EOF()` — проверка, достигнут ли конец набора данных. | ||
- `BOF()` — проверка, находится ли курсор в начале набора данных. | ||
|
||
### Методы настройки | ||
|
||
Заглушка также предоставляет методы настройки, реализованные в виде текучих выражений (fluent API), что делает процесс настройки данных более удобным и читаемым. | ||
|
||
- **Создание заглушки:** | ||
- `ЮТест.Данные().ADORecordSet()` — принимает информацию о колонках (имена и типы данных). | ||
|
||
- **Добавление данных:** | ||
- `Добавить()` — добавляет новую строку значений в набор данных. | ||
|
||
## Пример использования заглушки | ||
|
||
Пример использования заглушки для тестирования кода, работающего с `ADO.RecordSet`: | ||
|
||
```bsl | ||
Процедура Тест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`, не прибегая к сложным и громоздким решениям. Это делает процесс разработки и тестирования более гибким и эффективным. |
Oops, something went wrong.