Переопределение планировщиков RxAndroid для тестирования - PullRequest
0 голосов
/ 09 января 2019

Я видел использование RxImmediateSchedulerRule для переопределения планировщиков для тестирования. Но в моем случае это не работает, поскольку я использую другие виды планировщиков - ThreadExecutor и PostExecutionThread из android10 cleanarchitecture github repo.

class UseCase(val repo: Repo, val threadExecutor: ThreadExecutor, val postExecutionThread: PostExecutionThread){
    fun execute() = repo.getData()
    .subscribeOn(Schedulers.from(threadExecutor))
    .observeOn(postExecutionThread.scheduler)
}

Я могу переопределить планировщик в методе наблюдения с приведенным ниже кодом.

whenever(postExecutionThread.scheduler).thenReturn(Schedulers.trampoline())

Но я не нашел способа переопределить планировщик в методе подписки. Как я могу это сделать?

1 Ответ

0 голосов
/ 09 января 2019

Вы можете передать приведенную ниже реализацию теста ThreadExecutor конструктору вашего UseCase в коде теста. Это на самом деле фабричная функция, которую я предпочитаю производным классам в таких случаях (но вы также можете использовать производный класс).

fun immediateExecutor() : ThreadExecutor {
    return object : ThreadExecutor {
        override fun run(command: Runnable) {
            command.run()
        }
    }
}

Он сразу запускает команды, которых должно быть достаточно для модульного тестирования ваших вариантов использования.

...