Spy
General
// Definition
A test double that wraps real behaviour and records calls, so the test can both let the real code run and inspect how it was used.
// Code Example
SinonSpy on a method to verify calls
TypeScriptimport sinon from 'sinon';
import { logger } from './logger';
const spy = sinon.spy(logger, 'info');
doImportantWork();
expect(spy.calledOnce).toBe(true);
expect(spy.firstCall.args[0]).toBe('work complete');
spy.restore();// Related terms
Mock
A test double that records how it was called and lets the test assert on those interactions. Pre-programmed with expectations about which methods will be called and how.
Stub
A test double that returns canned responses to method calls, replacing real behaviour without recording or asserting on calls.
Test Doubles
Umbrella term for any object that stands in for a real dependency in a test. Includes dummies, fakes, stubs, spies, and mocks — each with distinct semantics.