Как удалить только сгенерированные данные модульного теста?
Я использую этот код для создания данных:
Method OnBeforeAllTests() As %Status
{
// Create one MyClass row
Do ##class(MyClass).Populate(1)
Quit $$$OK
}
и это для удаления данных:
Method OnAfterAllTests() As %Status
{
Do ##class(MyClass).%KillExtent()
Quit $$$OK
}
Как я могу изменить OnAfterAllTests
удалить только те данные, которые я заполнил, используя OnBeforeAllTests
а не удалять какие-либо другие данные?
1 ответ
Единственное, что может автоматически отслеживать то, что вы сделали, и откатывать это назад - это транзакция.
Кроме этого вам нужно следить за этим самостоятельно, или просто не иметь ваших модульных тестов для создания данных. Это не очень хорошая практика, чтобы тестировать определенный код в вашей производственной системе, поэтому поле флага "testData" не очень хорошо, но я думаю, вы могли бы.
Мое личное решение состояло в том, чтобы создать тесты, которые на самом деле не вставляют данные в первую очередь, но для этого потребовалось использование внедрения зависимостей и создание среды для насмешки, чтобы сделать возможным выполнение модульных тестов.
Несколько более простым решением может быть наличие объекта, который отслеживает все ваши изменения данных и откатывает их в конце, но, возможно, простое использование транзакции поможет в этом.