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 (также сделайте его обнуляемым типом).

Другие вопросы по тегам