Как использовать KoinTestRule без получения «KoinContext уже запущен»? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь использовать тестовое правило Koin для запуска и остановки Koin с тестовыми модулями, однако каждый раз, когда я пытаюсь использовать это правило или startKoin (), я получаю «KoinContext уже запущен». Сначала я запускаю Koin в классе приложений, что может иметь какое-то отношение к проблеме, но я сам не уверен, как обойти это. Буду признателен за любую помощь в этом вопросе.

Применение:

override fun onCreate() {
    super.onCreate()

    startKoin {
        androidContext(this@Application)
        modules(repositoryModule, daoModule, viewModelModule, wrapperModule)
    }
}

Тест:

@get:Rule
val koinTestRule = KoinTestRule.create {
    modules(repositoryTestModule)
}

Модуль тестирования репозитория:

val repositoryTestModule = module {
    single<JournalRepository> { FakeJournalRepository() }
}

1 Ответ

0 голосов
/ 18 апреля 2020

Мне удалось решить эту проблему, создав пользовательское тестовое приложение и переопределив методы onCreate и onTerminate, запустив и остановив Koin соответственно. Не загружая никаких модулей в Приложение, я могу загрузить модули, необходимые каждому классу.

Если есть лучшее решение, я бы хотел услышать его. Спасибо

...