Koin Тест графа зависимостей
Пытаюсь написать тест для проверки графа зависимостей Koin. Получаю ошибку, полагаю что из за контекста. Как его правильно передать? Приложение кстати запускается и работает нормально.
org.koin.core.error.InstanceCreationException: Could not create instance for [Single:'com.example.vkmessenger.local.UserDao']
Caused by: io.mockk.MockKException: no answer found for: Application(#1).getApplicationContext()
Сам тест:
class MyTest : KoinTest {
private val mockApplication: Application = mockk()
@Test
fun checkDependencyGraph() {
startKoin {
androidContext(mockApplication)
modules(listOf(appModule, viewModelModule, serviceModule))
}.checkModules()
}
}
Один из модулей:
val appModule = module {
single { provideDispatcher() }
single { provideUserDao(provideDatabase(androidContext())) }
single { provideFriendsDao(provideDatabase(androidContext())) }
single { provideVkApi() }
single<VkNetworkDataSource> { VkRetrofitDataSource(get(), get()) }
single<VkLocalDataSource> { VkRoomDataSource(get(), get(), get()) }
single<VkRepository> { VkDefaultRepository(get(), get(), get()) }
}
fun provideDispatcher(): CoroutineDispatcher = Dispatchers.IO
fun provideUserDao(vkDatabase: VkDatabase): UserDao =
vkDatabase.userDao()
fun provideFriendsDao(vkDatabase: VkDatabase): FriendsDao =
vkDatabase.friendsDao()
fun provideDatabase(context: Context): VkDatabase {
var INSTANCE: VkDatabase? = null
INSTANCE = INSTANCE ?: Room.databaseBuilder(
context.applicationContext,
VkDatabase::class.java,
"vk_base"
).build()
return INSTANCE
}
Application:
class VkApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidContext(this@VkApplication)
androidLogger()
modules(listOf(appModule, viewModelModule, serviceModule))
}
}