CINXE.COM
Sinon.JS
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Sinon.JS</title> <meta name="description" content="Standalone test spies, stubs and mocks for JavaScript. Works with any unit testing framework." /> <link rel="stylesheet" href="/assets/css/main.css"> <link rel="shortcut icon" href="/assets/images/favicon.png"> <script> var site = {}; // site settings </script> <link rel="canonical" href="https://sinonjs.org/how-to/" /> <link href="https://fonts.googleapis.com/css?family=Karla:400,700" rel="stylesheet"> </head> <body> <div class="navigation"> <div class="container"> <nav class="navbar header"> <div class="navbar-header"> <a class="navbar-brand" href="/"> Sinon.JS </a> </div> <ul class="nav navbar-nav navbar-right"> <li><a href="/releases/v19">Documentation</a></li> <li><a href="/releases/">Releases</a></li> <li><a href="/how-to/">How To</a></li> <li><a href="https://github.com/sinonjs/" target="blank" class="github-nav"><img src="/assets/images/github.png" alt="Github"></a></li> </ul> </nav> </div> </div> <div class="content"> <div class="container container-2"> <div class="bg-info hidden" id="banner-message"> These docs are from an older version of sinon. Do you want the <a href="/releases/latest/">latest</a> docs? </div> <script> if (site.showBanner) { document.getElementById("banner-message").classList.remove("hidden"); } </script> <div class="head-page"> <h1>How To articles</h1> </div> <p> This is a collection of how to articles for common scenarios using Sinon.JS. </p> <ul> <li><a href="/how-to/link-seams-commonjs/">How to stub out CommonJS modules</a></li> <li><a href="/how-to/lolex-async-promises/">How to test async functions with fake timers</a></li> <li><a href="/how-to/stub-dependency/">How to stub a dependency of a module</a></li> <li><a href="/how-to/typescript-swc/">Case study: real world dependency stubbing</a></li> </ul> <h2>Related libraries</h2> <ul> <li><a href="https://github.com/thlorenz/proxyquire">proxyquire — Proxies nodejs require in order to allow overriding dependencies during testing</a></li> <li><a href="https://github.com/plasticine/inject-loader">inject-loader - Webpack loader that allows overriding dependencies during testing</a></li> <li><a href="https://github.com/codazzo/sisyphos">sisyphos — utility to stub modules imported with the System.js module loader</a></li> <li><a href="https://github.com/mroderick/bogus">bogus — utility for mocking dependencies when testing RequireJS based projects</a></li> <li><a href="http://www.wheresrhys.co.uk/fetch-mock/">fetch-mock — Mock http requests made using fetch</a></li> <li><a href="https://github.com/msn0/fake-fetch">fake-fetch — fake window.fetch for tests</a></li> <li><a href="https://github.com/thoov/mock-socket">Mock Socket — mocking library for websockets and socket.io</a></li> <li><a href="https://github.com/mroderick/wrapple">wrapple — generic wrapper for browser natives (or other globals) to allow stubbing in unit tests</a></li> <li><a href="https://github.com/testdouble/testdouble.js">test double — minimal test double library for TDD with JavaScript</a></li> </ul> <h2>Articles elsewhere on the web</h2> <ul> <li><a href="https://scotch.io/tutorials/how-to-test-nodejs-apps-using-mocha-chai-and-sinonjs">How to Test NodeJS Apps using Mocha, Chai and SinonJS</a></li> <li><a href="https://codeutopia.net/blog/2015/03/21/unit-testing-ajax-requests-with-mocha/">How to test an Ajax request using Sinon's fake XMLHttpRequest</a></li> <li><a href="https://codeutopia.net/blog/2016/05/23/sinon-js-quick-tip-how-to-stubmock-complex-objects-such-as-dom-objects/">How to stub or mock complex objects, such as DOM objects</a></li> <li><a href="https://www.sitepoint.com/promises-in-javascript-unit-tests-the-definitive-guide/">Using Sinon.js with Promises</a></li> <li><a href="https://semaphoreci.com/community/tutorials/best-practices-for-spies-stubs-and-mocks-in-sinon-js">Best practices for spies, stubs and mocks</a></li> <li><a href="https://codeutopia.net/blog/2016/06/10/mongoose-models-and-unit-tests-the-definitive-guide/">Using Sinon.js to help test Mongoose models</a></li> <li><a href="http://mherman.org/blog/2017/11/06/stubbing-http-requests-with-sinon/">Stubbing HTTP Requests With Sinon</a></li> <li><a href="http://mherman.org/blog/2018/01/22/stubbing-node-authentication-middleware-with-sinon">Stubbing Node Authentication Middleware with Sinon</a></li> <li><a href="https://www.scraggo.com/testing-immutable-js-with-sinon-custom-matchers/">Testing ImmutableJS with Sinon custom matchers</a></li> <li><a href="https://www.pluralsight.com/courses/sinonjs-fundamentals">SinonJS Fundamentals</a></li> </ul> </div> </div> <script src="/assets/js/prism.js"></script> <div class="footer"> <div class="container text-center"> <a href="http://sinonjs.org/" target="blank"><img class="grow" src="/assets/images/logo.png" alt="Sinon.JS"></a> <p><a target="blank" class="join-btn" href="https://stackoverflow.com/questions/tagged/sinon">Join the discussion on Stack Overflow!</a></p> <p>All copyright is reserved the Sinon committers.</p> <p>Released under the <a href="https://opensource.org/licenses/BSD-3-Clause">BSD license</a>.</p> </div> </div> <script src="/assets/js/sinon.js"></script> </body> </html>