如何解决MockK verifySequence 由于对象引用而不起作用
我经常使用状态类(密封类)来控制屏幕状态(比如成功、错误和加载)。所以我会有类似的东西:
sealed class State {
object Loading: State()
object Success : State()
object Error : State()
}
现在,在某些课程中,我有一个具有此值的属性,在某个流程中,我将其设置为 Loading,然后将其设置为 Error。我可以检查这是否是使用 verifySequence
设置此属性的顺序,如下所示:
verifySequence {
stateObserver.onChanged(State.Loading)
stateObserver.onChanged(State.Success)
}
现在假设我的密封类内部有类而不是对象,并且有点复杂,如下所示:
sealed class NetworkResult<T> {
class Success<T>(val data: T) : NetworkResult<T>()
class Error<T>(val message: String) : NetworkResult<T>()
class Loading<T> : NetworkResult<T>()
}
当我尝试检查序列时,我的测试失败了,因为我正在使用类并且 MockK 通过引用进行断言:
verifySequence {
stateObserver.onChanged(State.Loading())
stateObserver.onChanged(State.Success(list))
}
知道如何检查这个序列吗?
解决方法
尝试使用数据类而不是简单的类:
sealed class NetworkResult<T> {
data class Success<T>(val data: T?) : NetworkResult<T>()
data class Error<T>(val message: String?) : NetworkResult<T>()
data class Loading<T>(val nothing: Nothing? = null) : NetworkResult<T>()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。