簡體   English   中英

由於 object 參考,MockK verifySequence 無法正常工作

[英]MockK verifySequence not working because of object reference

我經常使用 state class(密封類)來控制我的屏幕的 state(比如說成功、錯誤和加載)。 所以我會有類似的東西:

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

現在,在某些 class 上,我有一個具有此值的屬性,在某個流程中,我將其設置為 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>()
}

當我嘗試檢查順序時,我的測試失敗了,因為我使用的是 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>()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM