# Sinon Mocking

> Sinon.js

- Skill: `comeonoliver/sinon-mocking` (Agent Skill)
- Install (CLI): `npx skillmds@latest add comeonoliver/sinon-mocking`
- Raw SKILL.md: https://api.skillmd.com/api/skills/comeonoliver/sinon-mocking/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ComeOnOliver (https://skillmd.com/u/comeonoliver)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/comeonoliver/sinon-mocking

---

# Sinon.js

## Spies
```typescript
const spy = sinon.spy(obj, 'method');
obj.method('arg');
expect(spy.calledWith('arg')).to.be.true;
spy.restore();
```

## Stubs
```typescript
const stub = sinon.stub(api, 'fetch');
stub.resolves({ id: 1, name: 'Alice' });
stub.withArgs('error').rejects(new Error('fail'));
```

## Fake Timers
```typescript
const clock = sinon.useFakeTimers();
const debounced = debounce(fn, 100);
debounced(); debounced();
clock.tick(100);
expect(fn.callCount).to.equal(1);
clock.restore();
```

## Sandbox (auto-cleanup)
```typescript
const sandbox = sinon.createSandbox();
afterEach(() => sandbox.restore());
sandbox.stub(api, 'fetch').resolves([]);
```

