Можно ли издеваться с помощью библиотеки mockk.
У меня есть класс (некоторые детали удалены, попытался упростить проблему)
class SettingsManager(val application: Application) {
private val fetcher: Fetcher = Fetcher(application)
suspend fun fetchRemote() {
fetcher.doFetch()
}
}
class Fetcher(val application: Application) {
fun doFetch() {
if (canFetch()) {
// make GET request
}
}
fun canFetch() {
if (application.isOnline()) {
return true
}
return false
}
}
Extension
@RequiresPermission(value = Manifest.permission.ACCESS_NETWORK_STATE)
fun Context.isOnline(): Boolean {
val connectivityManager = this
.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
connectivityManager?.apply {
val netInfo = activeNetworkInfo
netInfo?.let {
if (it.isConnected) return true
}
}
return false
}
Я пытаюсь в основном издеваться над работой, которую делает частный класс Фетчер. Я думал, что смогу сделать:
val mockFetcher = mockk<Fetcher>()
every { mockFetcher.canFetch() } returns true
Но это не издевается над частным случаем. Есть ли способ издеваться над частным экземпляром? Я понимаю, что если я создал интерфейс для частного сборщика, а вместо этого сделал его общедоступным и ввел тип, я могу поиздеваться над ним. Но логику извлечения не нужно знать внешним потребителям диспетчера настроек. Я не был уверен, возможно ли издеваться над личным объектом с помощью mockk.