如何在没有“A KoinContext 已启动”的情况下使用 KoinTestRule?
Posted
技术标签:
【中文标题】如何在没有“A KoinContext 已启动”的情况下使用 KoinTestRule?【英文标题】:How to use KoinTestRule without getting "A KoinContext is already started"? 【发布时间】:2020-07-31 18:54:32 【问题描述】:我正在尝试使用 Koin 的测试规则来启动和停止带有测试模块的 Koin,但是每次我尝试使用此规则或 startKoin() 时,我都会得到“A 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】:我设法通过创建自定义测试应用程序并覆盖 onCreate 和 onTerminate 方法,分别启动和停止 Koin 来解决此问题。通过不在应用程序中加载任何模块,我可以加载每个类所需的模块。
如果有更好的解决方案,我很乐意听到。谢谢
【讨论】:
你有没有找到更好的选择?以上是关于如何在没有“A KoinContext 已启动”的情况下使用 KoinTestRule?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 createSlice 的情况下使用 createThunkAsync
如何在没有没有索引的 url 的情况下调用 codeigniter 控制器功能