Чем отличаются mocks / stubs / fakes / spies? Когда каждый применять? Приведи пример хорошего и плохого использования mock.