# sinon

> JavaScript test spies, stubs and mocks.

Latest version **22.1.0** (published 2026-07-20) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install sinon
pnpm add sinon
yarn add sinon
bun add sinon
```

## Health

**Score 68/100 (B)** — status: active.

Positive: has types package; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 22.1.0 |
| Published | 2026-07-20 |
| First published | 2010-12-20 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | separate (@types/sinon) |
| Module format | ESM + CommonJS |
| Dependencies | 4 |
| Unpacked size | 2.4 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 9758 |
| Author | Christian Johansen |
| Maintainers | fatso83, cjohansen, mantoni, mrgnrdrck |
| Keywords | sinon, test, testing, unit, stub, spy, fake, time, clock, mock, xhr, assert |

## Links

- npm: https://www.npmjs.com/package/sinon
- Repository: https://github.com/sinonjs/sinon
- Homepage: https://sinonjs.org/
- Issues: https://github.com/sinonjs/sinon/issues
- Funding: https://opencollective.com/sinon
- npm.io page: https://npm.io/package/sinon

## Dependencies (4)

- [diff](https://npm.io/package/diff.md) ^9.0.0
- [@sinonjs/samsam](https://npm.io/package/@sinonjs/samsam.md) ^10.0.2
- [@sinonjs/commons](https://npm.io/package/@sinonjs/commons.md) ^3.0.1
- [@sinonjs/fake-timers](https://npm.io/package/@sinonjs/fake-timers.md) ^15.4.0

## Alternatives

- [pagerjs](https://npm.io/package/pagerjs.md) — 60 weekly downloads
- [whistle.savefor-mock](https://npm.io/package/whistle.savefor-mock.md) — 4 weekly downloads
- [@precisa-saude/fhir-rnds-sandbox](https://npm.io/package/@precisa-saude/fhir-rnds-sandbox.md) — 0 weekly downloads
- [@codegrenade/naija-faker-mcp](https://npm.io/package/@codegrenade/naija-faker-mcp.md) — 0 weekly downloads
- [@hainaio/page-spy-plugin-ospy](https://npm.io/package/@hainaio/page-spy-plugin-ospy.md) — 0 weekly downloads

## Recent versions

- 22.1.0 (latest) — 2026-07-20
- 22.0.0 — 2026-05-05
- 21.1.2 — 2026-04-11
- 21.1.1 — 2026-04-10
- 21.1.0 — 2026-04-09
- 21.0.3 — 2026-03-16
- 21.0.2 — 2026-03-04
- 21.0.1 — 2025-12-19
- 21.0.0 — 2025-06-13
- 20.0.0 — 2025-03-24
- 19.0.5 — 2025-03-24
- 19.0.4 — 2025-03-19
- 19.0.3 — 2025-03-19
- 19.0.2 — 2024-09-13
- 19.0.1 — 2024-09-13
- … 206 more at https://npm.io/package/sinon/versions

## README

<h1 align=center>
    <a href="https://sinonjs.org" title="Sinon.JS">
        <img alt="Sinon.JS" src="https://sinonjs.org/assets/images/logo.png">
    </a>
    <br>
    Sinon.JS
</h1>

<p align=center>
    Standalone and test framework agnostic JavaScript test spies, stubs and mocks (pronounced "sigh-non", named after <a href="https://en.wikipedia.org/wiki/Sinon">Sinon, the warrior</a>).
</p>

<p align=center>
<a href="https://www.npmjs.com/package/sinon"><img src="https://img.shields.io/npm/v/sinon.svg?style=flat" alt="npm version"></a>
<a href="https://saucelabs.com/u/sinonjs"><img src="https://saucelabs.com/buildstatus/sinonjs" alt="Sauce Test Status"/></a>
<a href="https://codecov.io/gh/sinonjs/sinon"><img src="https://codecov.io/gh/sinonjs/sinon/branch/master/graph/badge.svg" alt="Codecov status"></a>
<a href="#backers"><img src="https://opencollective.com/sinon/backers/badge.svg" alt="OpenCollective"></a>
<a href="#sponsors"><img src="https://opencollective.com/sinon/sponsors/badge.svg" alt="OpenCollective"></a>
<a href="https://www.npmjs.com/package/sinon" target="_blank"><img src="https://img.shields.io/npm/dm/sinon.svg" alt="npm downloads per month"></a>
<a href="https://cdnjs.com/libraries/sinon.js" target="_blank"><img src="https://img.shields.io/cdnjs/v/sinon.js.svg" alt="CDNJS version"></a>
<a href="CODE_OF_CONDUCT.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg" alt="Contributor Covenant" /></a>
</p>

<!-- Shows an outdated badge. Will not be fixed until https://github.com/sinonjs/fake-timers/pull/395 ships.
<p align=center>
<a href="https://app.saucelabs.com/u/sinonjs">
  <img src="https://app.saucelabs.com/browser-matrix/sinonjs.svg" alt="Sauce Test Status"/>
</a>
</p>
-->

## Compatibility

For details on compatibility and browser support, please see [`COMPATIBILITY.md`](COMPATIBILITY.md)

## Installation

via [npm](https://github.com/npm/npm)

    $ npm install sinon

or via Sinon's browser builds available for download on the [homepage](https://sinonjs.org/releases/).
There are also [npm based CDNs](https://sinonjs.org/releases#npm-cdns) one can use.

## Usage

See the [sinon project homepage](https://sinonjs.org/) for documentation on usage.

If you have questions that are not covered by the documentation, you can [check out the `sinon` tag on Stack Overflow](https://stackoverflow.com/questions/tagged/sinon).

## Goals

- No global pollution
- Easy to use
- Require minimal “integration”
- Easy to embed seamlessly with any testing framework
- Easily fake any interface
- Ship with ready-to-use fakes for timers

## Contribute?

See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how you can contribute to Sinon.JS. Artifact-first [contract tests](CONTRIBUTING.md#contract-tests) are used to protect public APIs during migration.
The `lib/` directory is generated build output and is not committed to the repository; run `npm run build` to regenerate it locally when needed.

## Backers

Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/sinon#backer)]

<a href="https://opencollective.com/sinon#backers" target="_blank"><img src="https://opencollective.com/sinon/backers.svg?width=890"></a>

## Sponsors

Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/sinon#sponsor)]

<a href="https://opencollective.com/sinon/sponsor/0/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/1/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/2/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/3/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/4/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/5/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/6/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/7/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/8/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/9/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/9/avatar.svg"></a>
<a href="https://opencollective.com/sinon/sponsor/10/website" target="_blank"><img src="https://opencollective.com/sinon/sponsor/10/avatar.svg"></a>

## Licence

Sinon.js was released under [BSD-3](LICENSE)

---
_Source: https://npm.io/package/sinon · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
