Kotest Koin 확장
Kotest Koin 확장에 대해 소개한다.
Koin DI Framwork는 KoinExtension
확장을 통해 Kotest와 같이 사용할 수 있다.
프로젝트에서 확장자를 사용하려면 프로젝트에 종속성을 추가한다:
io.kotest.extensions:kotest-extensions-koin:${version}
종속성이 추가되면, 테스트에서 Koin을 간단히 사용할 수 있다.
class KotestAndKoin : FunSpec(), KoinTest {
override fun extensions() = listOf(KoinExtension(myKoinModule))
val userService by inject<UserService>()
init {
test("use userService") {
userService.getUser().username shouldBe "LeoColman"
}
}
}
기본적으로 확장자는 리프 테스트(leaf test) 사이에서 Koin 컨텍스트를 시작/중지한다. 중첩된 스펙 스타일(예: DescribeSpec
)을 사용하는 대신 루트 테스트의 모든 리프에 걸쳐 Koin 컨텍스트를 유지하려는 경우(예: 테스트 간에 모의 선언을 공유하기 위해), KoinExtension
생성자에서 수명 주기 모드를 KoinLifecycleMode.Root
로 지정할 수 있다.
class KotestAndKoin : DescribeSpec(), KoinTest {
override fun extensions() = listOf(KoinExtension(module = myKoinModule, mode = KoinLifecycleMode.Root))
val userService by inject<UserService>()
init {
describe("use userService") {
it("inside a leaf test") {
userService.getUser().username shouldBe "LeoColman"
}
it("this shares the same context") {
userService.getUser().username shouldBe "LeoColman"
}
}
}
}
참조
최종 수정 : 2024-04-14