Каким образом Delagetes.observable в BroadcastReceiver может быть протестирован модулем? - PullRequest
0 голосов
/ 28 января 2020

Как я могу протестировать Delegates.Observable, который находится внутри BroadcastReceiver. Мне нужно получить уровень заряда батареи устройства и проверить, опустился ли он ниже или выше предварительно определенного критического уровня, и загрузить на сервер, используя UseCase чистой архитектуры. Я использовал наблюдаемые, чтобы наблюдать только меняющиеся состояния.

private fun handleIntent(context: Context, intent: Intent) {

    when (intent.action) {



        Intent.ACTION_BATTERY_CHANGED -> {

            try {
                val batteryStatus =
                    context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
                val level = batteryStatus?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1
                val scale = batteryStatus?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1

                 batteryPct = (level / scale.toFloat() * 100).toInt()

                isBatteryBelowCritical = batteryPct > CRITICAL_BATTERY

            } catch (e: Exception) {

            }

        }
    }
}

И наблюдаемый

private var isBatteryBelowCritical by Delegates.observable(false) { _, old, new ->

        // Just went above critical battery value
        if (old && !new) {
            sendAlarmUseCase.sendBatteryAlarm(batteryPct)
        } else if (!old && new) {
            // Just went below critical battery value
            sendAlarmUseCase.sendBatteryAlarm(batteryPct)
        }

    }

Нужно ли использовать параметры или предполагать старое значение для проверки текущего значения? Как проверяется состояние? Должен ли я использовать параметризованный тест или принять предыдущее значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...