いわたんち

いわたんちは概念となりました

LiveDataの中身までmockkでテストする

sealed class Status {
    object InProgress : Status()
    object Success : Status()
    data class Failure(val e: Throwable) : Status()
}

class Data {
  val status: LiveData<Status>
}

↑みたいな構造のコードで、DataクラスのstatusがFailureになった際のeの型もちゃんとテストしたいみたいな場合、

val observer = mockk<Observer<Status>>(relaxed = true)
val data = Data()

data.observeForever(observer)

// 何かしらのテストするためのAction

verify {
  data.onChanged(match { it is Status.Failure && it.e is RuntimeException })
}

match を使えば良い