<https://github.com/InsertKoinIO/koin/issues/1614>...
# koin
m
https://github.com/InsertKoinIO/koin/issues/1614 Seems
null
parameter value can't be retrieved with
get()
. I created issue for that.
m
Ofc u have to use getOrNull()
m
No this doesn't work... 😔
Copy code
package 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:
Copy code
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
a
Nullable parameter injection is tedious topic yes
thanks for the feedback