【发布时间】:2018-10-15 14:38:52
【问题描述】:
我对 Koin 和“androidTest”有疑问。 因为androidTest启动了Application,所以测试中不需要自己启动Koin。
现在我需要注入一个模拟服务。问题是,我在一个单例类中使用 get() 注入了一个方法,这不能通过构造函数注入工作,因为注入的对象可以有不同的实现。
我的想法是用这种方式声明我需要什么:
declare {
factory<Webservice>(override = true) { mockWebservice }
}
但这将应用于所有测试。这就是为什么另一个检查是否注入了正确的类的测试失败的原因。
我也尝试在 @After 方法中使用 stopKoin()、startKoin(listOf(appModule)),但是这样依赖注入在以后的测试中不再起作用。
有没有办法只为一个测试声明模拟?
【问题讨论】:
-
所以你只想为那个测试声明
mockWebService? -
是的,但看起来如果没有用于测试的特殊应用程序类或类似的东西是不可能的
标签: android dependency-injection kotlin koin