I guess using mockito or writing your own mocks is personal preference.

Im really more talking about integration style tests where I want my application working the same way as I do in production other that a few repositories/api clients to be stubbed out so I dont have to set up external dependencies to run my tests.

I haven't seen a particularly clean way to do this with a hand wired scala app but is a no brainer in guice, have a look at the user-notifications project.

An additional benefit of using guice is you can create a separate injector per test, this makes each test completely independent meaning you can run them in parallel without the stubbing in one test interfering with the stubbing in another. This sadly may not work in play because the framework depends on static objects.

It just feels like the current tide against DI is a product of picking a few random bits of technology and blaming the for why we wrote lots of crap code in the past, and obviously a preference for the new and shiny.