Cómo alterar las properties del object de testing en KotlinTest a través de interceptTestCase

Estoy tratando de usar el método interceptTestCase para configurar las properties de un caso de testing en KotlinTest como a continuación:

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}") } } } 

El resultado que obtengo es:

Antes de la testing 1 y 456

Durante la testing 0 y 123

Después de la testing 1 y 456

Entonces los cambios que he hecho no son visibles dentro del caso de testing. ¿Cómo debo cambiar una propiedad antes de que se ejecute cada testing?

debe acceder a la especificación actual a través de TestCaseContext . cada testing tiene su Spec separada, por ejemplo:

 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}") } }