【发布时间】:2021-09-11 10:31:37
【问题描述】:
我已经实现了一个像这样的Repositoryclass:
class Repository @Inject constructor(private val dao: Dao) {
val response: LiveData<List<MyObject>> = dao.getAllObjects()
...
}
现在我为这样的代码和平编写了一个简单的单元测试:
class RepositoryTest {
@MockK
private lateinit var mockLiveData: LiveData<List<MyObject>>
@MockK
private lateinit var mockDao: Dao
@InjectMockKs
private lateinit var repository: Repository
init {
MockKAnnotations.init(this, relaxed = true)
}
@Test
fun `Verify my objects are loaded from the database`() {
// arrange
every { dao.getAllObjects() } returns mockLiveData
// assert
verify { dao.getAllObjects() }
assertEquals(this.mockLiveData, repository.response)
}
assertEquals 检查失败并出现错误:
Expected :LiveData(mockLiveData#2)
Actual :LiveData(child of mockDao#5#7)
我不明白为什么对象不相等以及如何重写此测试以验证 livedata 对象是否相等?
【问题讨论】:
标签: android unit-testing junit android-livedata mockk