Skip to content

Instantly share code, notes, and snippets.

data class MessageData(val welcomeMessage: String)
val koinModule = module {
single { MessageData() }
single<TimeService> { TimeServiceImpl() }
single<GreetingService> {
GreetingServiceImpl(get(), get())
}
}
class KoinApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
modules(koinModule)
}
}
}
class MainActivity : AppCompatActivity() {
private val greetingService by inject<GreetingService>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val greetings = findViewById<TextView>(R.id.greetingsTextView)
greetings.text = "${greetingService.greetings()}"
class GreetingServiceMockTest : KoinTest {
private val greetingService: GreetingService by inject()
@Test
fun testGreetingInTheMorning() {
startKoin { modules(koinModule) }
declareMock<TimeService> {
given(this.getHourOfDay()).willReturn(9)
}
val kodeinModule = Kodein.Module(name = "appmodule") {
bind() from singleton { MessageData() }
bind<TimeService>() with singleton { TimeServiceImpl() }
bind<GreetingService>() with singleton {
GreetingServiceImpl(instance(), instance()) }
}
class KodeinApplication : Application(), KodeinAware {
override val kodein = Kodein.lazy {
import(kodeinModule)
}
}
class MainActivity : AppCompatActivity(), KodeinAware {
override val kodein by closestKodein()
private val greetingService by instance<GreetingService>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
class GreetingServiceTest {
@Test
fun testGreetingInTheMorning() {
val testContainer = Kodein {
import(kodeinModule)
bind<TimeService>(overrides = true) with singleton {
object : TimeService {
override fun getHourOfDay(): Int = 9
@Module
interface DaggerModule {
@Binds
fun provideTimeService(impl: TimeServiceImpl): TimeService
@Binds
fun provideGreetingSersvice(impl: GreetingServiceImpl): GreetingService
}