Spek - переменная не инициализирована в тесте
Следующий код не компилируется:
describe("something") {
context("when something") {
var a: SomeType
beforeEachTest {
a = someNewMutableObject
}
it("should do something") {
assertTrue(a.something()) // variable a not initialized
}
}
}
Как можно обойти эту проблему? Что я мог бы присвоить переменной, чтобы избавиться от предупреждения?
1 ответ
Решение
Просто используйте модификатор lateinit для переменной, которая будет инициализирована перед использованием.
describe("something") {
context("when something") {
lateinit var a: SomeType
beforeEachTest {
a = someNewMutableObject
}
it("should do something") {
assertTrue(a.something()) // variable a is okay to use here
}
}
}
PS. lateinit
локальные переменные доступны только в Kotlin 1.2
В Kotlin 1.1 вы должны просто инициализировать его значением по умолчанию или null (также сделайте его обнуляемым типом).