mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-23 21:09:24 +02:00
100 lines
5.4 KiB
Markdown
100 lines
5.4 KiB
Markdown
---
|
|
tags: [Начало, Тестовые данные]
|
|
---
|
|
|
|
# Удаление тестовых данных
|
|
|
|
При использовании тестовых данных нередко необходимо удалять созданные объекты.
|
|
|
|
Для этого вы можете использовать
|
|
|
|
## Автоматические транзакции
|
|
|
|
Для включения нужно при регистрации теста вызвать метод `ВТранзакции()`
|
|
|
|
```bsl title=ВТранзакции.bsl
|
|
ЮТТесты
|
|
.ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста
|
|
|
|
ЮТТесты
|
|
.ДобавитьТестовыйНабор("Основной).ВТранзакции() // Использование транзакции для набора тестов
|
|
.ДобавитьТест("Фикция")
|
|
|
|
ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля
|
|
.ДобавитьТест("Фикция")
|
|
|
|
```
|
|
|
|
И тогда тестовый движок будет оборачивать в транзакцию каждый серверный тест (для клиентских будет игнорироваться)
|
|
|
|
:::caution Учитывайте
|
|
В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены.
|
|
Такие данные необходимо удалять самостоятельно при необходимости.
|
|
:::
|
|
|
|
## Механизм удаления тестовых данных
|
|
|
|
Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()`
|
|
|
|
```bsl title=УдалениеТестовыхДанных.bsl
|
|
ЮТТесты
|
|
.ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста
|
|
|
|
ЮТТесты
|
|
.ДобавитьТестовыйНабор("Основной).УдалениеТестовыхДанных() // Использование для всех тестов набора
|
|
.ДобавитьТест("Фикция")
|
|
|
|
ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля
|
|
.ДобавитьТест("Фикция")
|
|
|
|
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией
|
|
.ДобавитьТест("Фикция")
|
|
|
|
```
|
|
|
|
Механизм не использует транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений.
|
|
Позволяет:
|
|
|
|
* Удалять данные созданные с клиента
|
|
* Удалять данные созданные вне теста (в обработчиках событий)
|
|
|
|
:::caution Удаление и только
|
|
Механизм только удаляет созданные объекты, изменения не откатываются
|
|
:::
|
|
|
|
:::tip Разное время жизни данных
|
|
Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него.
|
|
:::
|
|
|
|
Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль.
|
|
|
|
```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl
|
|
Процедура ПередВсемиТестами() Экспорт
|
|
ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент();
|
|
КонецПроцедуры
|
|
|
|
Процедура ПередТестовымНабором() Экспорт
|
|
ДанныеНабора = ЮТест.Данные().СоздатьЭлемент();
|
|
КонецПроцедуры
|
|
|
|
Процедура ПослеВсехТестов() Экспорт
|
|
ДанныеТеста = ЮТест.Данные().СоздатьЭлемент();
|
|
КонецПроцедуры
|
|
|
|
Процедура Тест() Экспорт
|
|
Ссылка = ЮТест.Данные().СоздатьЭлемент();
|
|
КонецПроцедуры
|
|
```
|
|
|
|
Для переменных получим разное время жизни
|
|
|
|
* `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент).
|
|
* `ДанныеНабора` - Живет, пока исполняются тесты набора.
|
|
* `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест.
|
|
|
|
:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов:
|
|
|
|
* Данные создан не через API
|
|
* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка
|
|
:::
|