-
Notifications
You must be signed in to change notification settings - Fork 0
MockK: Mocking Repository in the presenter class
Devrath edited this page Mar 2, 2024
·
2 revisions
- Here we have a
presenterclass that gets data from a repository. - Data received from the
presenteris then used to do some tasks. - So we need to write some test cases in the
presenterclass. - We can use
MockKto mock therepositoryin thepresenterclass.
MainContract.kt
interface MainContract {
interface Presenter {
fun fetchData()
}
interface View {
fun onResult(result: List<String>)
fun onError(error: Throwable)
}
}DataModel.kt
data class DataModel(val dataIndex : Int, val dataValue: String)DataRepository.kt
class DataRepository {
fun fetchData(): List<DataModel> {
return listOf(
DataModel(1, "Value 1"), DataModel(2, "Value 2"),
DataModel(3, "Value 3"), DataModel(4, "Value 4"))
}
}MainPresenter.kt
class MainPresenter(
private val view: MainContract.View,
private val dataRepository: DataRepository
) : MainContract.Presenter {
override fun fetchData() {
try {
val result = dataRepository.fetchData()
view.onResult(
result.map { it.dataValue }
)
} catch (err: Exception) {
view.onError(err)
}
}
}