gpt4 book ai didi

android - 如何使用 viewmodel + livedata 进行单元测试改造 api 调用?

转载 作者:行者123 更新时间:2023-11-30 04:55:56 24 4
gpt4 key购买 nike

我刚刚了解了 Android 单元测试。我想用 viewmodel + livedata 对我的练习项目实现单元测试 API 改造调用。这是 View 模型类之一。

class NextMatchViewModel(league : League, application: Application): AndroidViewModel(application) {

// get idLeague passing for call getNextMatch()
private val _idLeague = MutableLiveData<League>()
private val idLeague: LiveData<League>
get() = _idLeague

// next match liveData
private val _nextMatch = MutableLiveData<List<Match>>()
val nextMatch: LiveData<List<Match>>
get() = _nextMatch

init {
//get _idLeague value from argument(SafeArgs)
_idLeague.value = league

getNextMatch()
}

private fun getNextMatch() {

idLeague.value?.idLeague?.let {
LeagueApi.retrofitService.getNextMatch(it).enqueue(object : Callback<MatchResponse>{
override fun onFailure(call: Call<MatchResponse>, t: Throwable) {
Log.d(TAG, t.message!!)
}

override fun onResponse(call: Call<MatchResponse>, response: Response<MatchResponse>) {
_nextMatch.value = response.body()?.events
Log.d(TAG, "success")
}

})
}
}

companion object {
private val TAG = NextMatchViewModel::class.java.simpleName
}

最佳答案

根据清洁架构方法,您的 ViewModel 代码不得包含任何与框架相关的代码。特别是关于应用程序的引用。 LeagueApi 不是表示层的一部分。您可以这样解决它:创建 UseCase 或 Interactor,将其注入(inject) viewModel,使用 Repository 模式,将其注入(inject) UseCase 或 Interactor,将 LeagueApi 注入(inject)您的存储库并在那里完成所有必要的工作。

此链接可能会有帮助:https://proandroiddev.com/how-to-implement-a-clean-architecture-on-android-2e5e8c8e81fe

良好的架构将使您的代码可测试。希望它会有所帮助:)

关于android - 如何使用 viewmodel + livedata 进行单元测试改造 api 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59172360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com