Martin Sloup
06/27/2023, 10:17 AMnull
parameter value can't be retrieved with get()
. I created issue for that.Merseyside
06/27/2023, 10:40 AMMartin Sloup
06/27/2023, 12:09 PMpackage kointest
import org.junit.Test
import org.koin.core.context.startKoin
import org.koin.core.parameter.parametersOf
import org.koin.dsl.module
import kotlin.test.assertEquals
import kotlin.test.assertNull
class KoinTest {
@Test
fun testNullableParam() {
val myModule = module {
factory {
MyFactory(
get(),
getOrNull(),
get()
)
}
}
val koin = startKoin {
modules(myModule)
}.koin
val instance = koin.get<MyFactory> {
parametersOf("param", null, "anotherParam")
}
assertEquals("param", instance.param)
assertNull(instance.nullableParam)
assertEquals("anotherParam", instance.anotherParam)
}
class MyFactory(val param: String, val nullableParam: String?, val anotherParam: String)
}
Output:
Could not create instance for '[Factory:'kointest.KoinTest$MyFactory']'
org.koin.core.error.InstanceCreationException: Could not create instance for '[Factory:'kointest.KoinTest$MyFactory']'
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:58)
at org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:38)
at org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:116)
at org.koin.core.scope.Scope.resolveValue(Scope.kt:246)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:231)
at org.koin.core.scope.Scope.get(Scope.kt:210)
at kointest.KoinTest.testNullableParam(KoinTest.kt:43)
...
Caused by: org.koin.core.error.NoBeanDefFoundException: No definition found for class:'java.lang.String' q:''. Check your definitions!
at org.koin.core.scope.Scope.throwDefinitionNotFound(Scope.kt:304)
at org.koin.core.scope.Scope.resolveValue(Scope.kt:274)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:231)
at org.koin.core.scope.Scope.get(Scope.kt:210)
at kointest.KoinTest$testNullableParam$myModule$1$1.invoke(KoinTest.kt:53)
at kointest.KoinTest$testNullableParam$myModule$1$1.invoke(KoinTest.kt:14)
at org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:51)
... 49 more
arnaud.giuliani
06/28/2023, 3:12 PMarnaud.giuliani
06/28/2023, 3:12 PM