Skip to content

Instantly share code, notes, and snippets.

@saswata-dutta
Created December 10, 2019 10:41
Show Gist options
  • Save saswata-dutta/a1457136fe76f7908592fea93914d22d to your computer and use it in GitHub Desktop.
Save saswata-dutta/a1457136fe76f7908592fea93914d22d to your computer and use it in GitHub Desktop.
using scala trait and object for DI
// https://www.michaelpollmeier.com/2014/06/29/simple-dependency-injection-scala
// define
trait MyService {
def foo = 42
}
// instantiate
object MyService extends MyService
// inject
class MyClient {
val service: MyService = MyService
}
// dual implementation
trait MyOtherService extends MyService {...}
object MyOtherService extends MyOtherService
val client = new MyClient { override val service = MyOtherService }
// test
val mockService = mock[MyService]
val testClient = new MyClient { override val service = mockService }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment