如何在使用注入参数时检查 Koin 模块?
How can I check Koin modules while using injection parameters?
我想使用 koin-test
提供的 checkModules()
方法检查我的配置,如 here 所述。
但是,我正在使用 injection parameters,但我的测试失败了,出现异常:
org.koin.core.error.NoParameterFoundException: Can't get parameter value #0 from org.koin.core.parameter.DefinitionParameters@3804648a
这里有一个简单的测试来演示这个问题:
import org.junit.Test
import org.koin.dsl.koinApplication
import org.koin.dsl.module
import org.koin.test.KoinTest
import org.koin.test.check.checkModules
class TestCase : KoinTest {
@Test
fun checkModules() {
koinApplication {
modules(
module { factory { (msg: String) -> Message(msg) } }
)
}.checkModules()
}
data class Message(val message: String)
}
有没有办法让它工作?我如何提供缺少的参数?
您需要将此参数传递给您的测试,如下所示:
class TestCase : KoinTest {
@Test
fun checkModules() {
koinApplication {
modules(module { factory { (msg: String) -> Message(msg) } })
}.checkModules {
create<Message> { parametersOf("testMessage") }
}
}
data class Message(val message: String)
}
Koin 存储库中的示例:CheckModulesTest.kt#L156
我遇到同样的问题:Issue
我想使用 koin-test
提供的 checkModules()
方法检查我的配置,如 here 所述。
但是,我正在使用 injection parameters,但我的测试失败了,出现异常:
org.koin.core.error.NoParameterFoundException: Can't get parameter value #0 from org.koin.core.parameter.DefinitionParameters@3804648a
这里有一个简单的测试来演示这个问题:
import org.junit.Test
import org.koin.dsl.koinApplication
import org.koin.dsl.module
import org.koin.test.KoinTest
import org.koin.test.check.checkModules
class TestCase : KoinTest {
@Test
fun checkModules() {
koinApplication {
modules(
module { factory { (msg: String) -> Message(msg) } }
)
}.checkModules()
}
data class Message(val message: String)
}
有没有办法让它工作?我如何提供缺少的参数?
您需要将此参数传递给您的测试,如下所示:
class TestCase : KoinTest {
@Test
fun checkModules() {
koinApplication {
modules(module { factory { (msg: String) -> Message(msg) } })
}.checkModules {
create<Message> { parametersOf("testMessage") }
}
}
data class Message(val message: String)
}
Koin 存储库中的示例:CheckModulesTest.kt#L156
我遇到同样的问题:Issue