I fully agree that the testing speed can often be a result of improving the code design.
This is probably how I'd implement a similar feature in barsoom.se's apps.
I'm mostly of the opinion that you should use the right tool for each job. Integrated tests to test integration. Unit tests to test logic and message passing.
I prefer to keep things simple and avoid dependency injection until there is a need for it outside of tests.