InsertKoinIO / koin

Koin - a pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform
https://insert-koin.io
Apache License 2.0
8.76k stars 695 forks source link

Koin module verification fails #1898

Open MolchanovDmitry opened 4 days ago

MolchanovDmitry commented 4 days ago

Describe the bug

  1. Koin module verification fails when initialize class in definition block.
  2. For CompositeDisposable dependency should add following extra types:
    listOf(
    Iterable::class,
    Array<Disposable>::class,
    )

To Reproduce Steps to reproduce the behavior:

  1. Create android project
  2. Add rxJava2 dep io.reactivex.rxjava2:rxjava:2.2.8
  3. Create koin module with CompositeDisposable dependency
  4. Initialize some class in definition block.

Expected behavior Test passes without adding additional extra types

Koin module and version: koin-android:3.5.6 koin-test:3.5.6

Snippet or Sample project to help reproduce

AppModule.kt

import io.reactivex.disposables.CompositeDisposable
import org.koin.dsl.module

class A
class B(val compositeDisposable: CompositeDisposable, val a: A)

val appModule = module {

    single { CompositeDisposable() }

    single { B(get(), A()) }
}

KoinVerificationTest.kt

class KoinVerificationTest {

    /** uncomment extra types for test pass */
    @Test
    fun `koin verification test`(){
        appModule.verify(extraTypes = listOf(
            //A::class,
            //Iterable::class,
            //Array<Disposable>::class,
        ))
    }
}