I’ve just read this post about the difference between mocks and stubs: Mocks vs. Stubs - It Has Nothing To Do With The Implementation
According to the post:
If we want our test to fail because external data suppled by a collaborator was used incorrectly, it’s a stub.
If we want our test to fail because a method was not invoked (correctly) on a collaborator, it’s a mock.