由于对象引用,MockK verifySequence 不工作

MockK verifySequence not working because of object reference

我经常使用状态 class(密封的 class)来控制屏幕状态(比如成功、错误和加载)。所以我会有类似的东西:

sealed class State {
    object Loading: State()
    object Success : State()
    object Error : State()
}

现在,在某些 class 上,我有一个具有此值的属性,在特定流程中,我将其设置为正在加载,然后设置为错误。我可以检查这是否是使用 verifySequence 设置此 属性 的顺序,如下所示:

verifySequence {
    stateObserver.onChanged(State.Loading)
    stateObserver.onChanged(State.Success)
}

现在假设我密封的 classes 里面有 classes 而不是对象,并且有点复杂,像这样:

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>()
}

当我尝试检查序列时,我的测试失败了,因为我使用的是 class 并且 MockK 通过引用进行断言:

verifySequence {
    stateObserver.onChanged(State.Loading())
    stateObserver.onChanged(State.Success(list))
}

知道如何检查这个序列吗?

尝试使用数据 class 而不是简单的 class:

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>()
}