Some testing tools like Moq (with MockBehavior.Strict), NMock, JMock and Rhino Mocks fluent and record/playback syntax use mocks.
Other testing tools like Moq (with Verify), Mockito and Rhino Mocks AAA syntax use spies.
Here I will note down the characteristics of both. Let start with the differences.
Spies allow to assert the expectations after the invocation of the method being tested, while mocks (we are talking abou strict mocks) require to set expectations before the target method invocation.
Because of it someone finds the test written with spies more readable, while someone else finds easier to write...