2017-01-13 3 views

ответ

2

Это не выглядит, как StringSpec предоставляет эту информацию, но вы можете продлить StringSpec, чтобы сделать это. например .:

class Spec : StringSpec() { 
    init { 
     "triangle.stl" { testCase -> 
      println(testCase.name) 
     } 
    } 

    operator fun String.invoke(test: (TestCase) -> Unit): TestCase { 
     var tc: TestCase? = null 
     tc = invoke(fun() { test(tc!!) }) 
     return tc 
    } 
} 

Или, чтобы избежать функции конфликтов с exsting String.invoke вы можете продлить его со своим собственным синтаксисом. например:

class Spec : StringSpec() { 
    init { 
     "triangle.stl" testCase { 
      println(name) 
     } 
    } 

    infix fun String.testCase(test: TestCase.() -> Unit): TestCase { 
     var tc: TestCase? = null 
     tc = invoke { test(tc!!) } 
     return tc 
    } 
} 
1

Вам нужно будет хранить ссылку на строку самостоятельно. Что-то вроде

class stl : StringSpec() { 
    init { 
     val spek = "triangle.stl" 
     spek { 
      // use spek in here 
     } 
    } 
} 
Смежные вопросы