Hi again Toby,
I have no experience with ScalaMock nor how it integrates with specs2. However there are a few things you can do to evaluate results several times or asynchronously:
If you are dealing with Futures you can transform any Matcher[T] into a Matcher[Future[T]], see
here (on the "Futures" tab) for the documentation.
On the same page you will also see that you can use the `eventually` method to retry a given matcher a certain number of times (you can specify the duration in the meantime).
If you want to apply the same retry logic to all your spec you can mix-in the AroundExample trait and implement it using the org.specs2.execute.EventuallyResults to systematically retry everything.
I'll cook up an example for you if you can't get it to work.
Eric.