Как изменить свойства тестовых объектов в 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
Firebase Firestore toObject () с Котлином Котлин, проблема создания экземпляров и общий Не удалось найти классы Котлина в функциональном модуле из другого модуля Kotlin: Как заменить уже открытый фрагмент на новый фрагмент в студии Android? Передача параметров пользовательскому получателю в котлин Kotlin: unit test assert object после gson Модуль Plain Kotlin в Android Studio 3.0, `api` не поддерживается? Kotlin: построить значение производного общего типа в базовом классе Как назначить новое значение, если вы устанавливаете setter private в kotlin? Почему публичные встроенные функции вызывают частные конструкторы Неразрешенная ссылка: Kotlin нуждается в 2 сборках после очистки, чтобы получить код при использовании kapt Котлин | Merge 2 ArrayList <Int> В одном массиве ArrayList <Int> Как настроить Mockito для Kotlin и Android Как обратиться к себе в анонимный класс? Обработчик аннотации Java / Kotlin: получить тип аннотированного поля / свойства