Recently I was writing integration tests for a library that returned futures. I wanted simple synchronous tests.
Fortunately in the latest release of ScalaTest they have added something to do just that: the ScalaFutures trait
Say you have a class that returns a Future, e.g:
And you want to write a test for this and you want to wait for the future to complete. In regular code you might use a call back or a for comprehension e.g:
This won't work in a test as the test will finish before the future completes and the assertions are on a different thread.
ScalaFutures to the rescue! Upgrade to ScalaTest 2.0+ and mix in the ScalaFutures trait. Now you can test using whenReady:
Or with futureValue:
Happy testing!
Full source code here.