首页 > 解决方案 > 如何测试此存储库方法 makeAddBuildingApiCall 和 addBuildingDetails

问题描述

那里有一个 repo 方法,它负责进行 API 调用,将数据插入后端。

如何使用 Mockito 向这两个方法 addBuildingDetails 和 makeAddBuildingApiCall 添加单元测试?

class AddBuildingRepository {

/**
 * mStatus is used to know the status code from the backend
 */
var mStatus: MutableLiveData<Int>? = null
var ok: Int? = null

/**
 * this block provides a static method which will return the object of the repository
 * if the object is already there than it returns the same
 * or else it will return a new object
 */
companion object {
    private var mAddBuildingRepository: AddBuildingRepository? = null
    fun getInstance(): AddBuildingRepository {
        if (mAddBuildingRepository == null) {
            mAddBuildingRepository = AddBuildingRepository()
        }
        return mAddBuildingRepository!!
    }
}

/**
 * function will initialize the MutableLivedata Object and than call a function for api call
 * Passing the Context and model and call API, In return sends the status of LiveData
 */
fun addBuildingDetails(mAddBuilding: AddBuilding): LiveData<Int> {
    if (mStatus == null) {
        mStatus = MutableLiveData()
    }
    makeAddBuildingApiCall(mAddBuilding)
    return mStatus!!
}
/**
 * make call to api to get the data from backend
 */
fun makeAddBuildingApiCall(mAddBuilding: AddBuilding) {
    val addBuildingService: ConferenceService = Servicebuilder.getObject()
    val addBuildingRequestCall: Call<ResponseBody> = addBuildingService.addBuilding(mAddBuilding)
    addBuildingRequestCall.enqueue(object : Callback<ResponseBody> {
        override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
            mStatus!!.value = Constants.INTERNAL_SERVER_ERROR
        }
        override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
            mStatus!!.value = response.code()
        }
    })
}
}

标签: javaandroidmvvmkotlinretrofit

解决方案


推荐阅读