我正在使用 MVVM 来构建我的 android 应用程序,我的存储库有一个从房间数据库查询数据并返回 LiveData 的方法,我的方法的签名是:
fun getFolder(id: Long): LiveData<Folder?>
我想用下面的代码为这个方法写一个单元测试:
import androidx.lifecycle.MutableLiveData
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import my.package.Folder
import my.package.FolderRepository
import java.util.*
class FolderRepositoryTest: FunSpec({
val repository = mockk<FolderRepository>()
val folder = Folder(
// folder field init code
)
val folderLiveData = MutableLiveData(folder)
test("FolderRepository getFolder works as expected") {
val id = folder.id.toLong()
every { repository.getFolder(any()) } returns folderLiveData
repository.getFolder(id)
verify {
repository.getFolder(id)
} shouldBe folderLiveData
}
})
但是测试失败并显示以下失败消息。
io.kotest.assertions.AssertionFailedError: 预期:androidx.lifecycle.MutableLiveData@1afc7182 但是是:<kotlin.Unit>
expected:<androidx.lifecycle.MutableLiveData@1afc7182> but was:<kotlin.Unit>
Expected :androidx.lifecycle.MutableLiveData@1afc7182
Actual :kotlin.Unit
谁能帮我指出我错在哪里以及如何使用kotest库和Mockk库编写单元测试用例。