Как изменить свойства тестовых объектов в KotlinTest через interceptTestCase

Я пытаюсь использовать метод interceptTestCase для настройки свойств тестового примера в KotlinTest, как показано ниже:

class MyTest : ShouldSpec() { private val items = mutableListOf<String>() private var thing = 123 override fun interceptTestCase(context: TestCaseContext, test: () -> Unit) { items.add("foo") thing = 456 println("Before test ${items.size} and ${thing}") test() println("After test ${items.size} and ${thing}") } init { should("not work like this") { println("During test ${items.size} and ${thing}") } } } 

Результат, который я получаю:

Перед испытанием 1 и 456

Во время теста 0 и 123

После испытаний 1 и 456

Итак, изменения, которые я сделал, не отображаются в тестовом примере. Как мне изменить свойство до каждого выполняемого теста?

вы должны получить доступ к текущей спецификации через TestCaseContext . каждый тест имеет свой разделенный Spec , например:

 override fun interceptTestCase(context: TestCaseContext, test: () -> Unit) { // v--- casting down to the special Spec here. with(context.spec as MyTest) { //^--- using with function to take the `receiver` in lambda body items.add("foo") // -- // |<--- update the context.spec properties thing = 456 // -- println("Before test ${items.size} and ${thing}") test() println("After test ${items.size} and ${thing}") } } 
Intereting Posts
Observer onChanged никогда не вызывал RxAndroid – обращение к ошибкам с помощью оператора Zip Как преобразовать ByteArray в String с указанной кодировкой в ​​Kotlin Kotlin: Модифицировать (неизменный) Список через бросок, это законно? Как реализовать в jna структуру sizeof () с типом объединения Могу ли я создать метод расширения Kotlin для добавления rxJava-подписки на композитную подписку? Добавить сгенерированное значение в объект RealmObject Проблема закрытия PlaceAutoCompleteFragment произошел сбой при попытке использовать намерение отправлять электронную почту (Kotlin) Kotlin, как объявить скованные поля с одинаковым типом данных Moshi: ожидается класс, ParameterizedType или GenericArrayType, но <null> имеет тип null Котлин: Применить против С java.lang.reflect.InvocationTargetException при использовании библиотеки Kotlin-Mokito BadCredentialsException: не удалось получить токен доступа с безопасностью загрузки Oauth2 на GAE Как решить: «Не удается найти getter для атрибута« android: text »при реализации двусторонней привязки данных к пользовательскому представлению?