Nanoseconds Produce Minutes
    Have ideas to improve npm?Join in the discussion! »

    jest-sinon
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/jest-sinon package

    1.0.4 • Public • Published

    NPM version Downloads Build Status Known Vulnerabilities codecov

    Jest-Sinon

    Jest-Sinon is a collection of assertions for using the mocking library Sinon.js with Jest.

    Example

    const bar = () => {};
    const foo = sinon.spy();
     
    foo(bar);
     
    // instead of:
    expect(foo.calledWith(bar)).toBeTruthy;
     
    // we can write:
    expect(foo).toHaveBeenCalledWith(bar);

    The assertions: toHaveBeenCalledTimes, toThrow, toReturnWith, toHaveBeenCalled and toHaveBeenCalledWith clash with the in-built Jest mocking framework. Jest-Sinon will try and detect which type of spy is being used and use the correct assertion. You should be able to use both mocking libraries in parallel.

    const foo = sinon.spy();
    const bar = jest.fn();
     
    foo();
    bar();
     
    expect(foo).toHaveBeenCalled(); // true
    expect(bar).toHaveBeenCalled(); // true

    Why?

    There are a number of reasons why you might want to use Sinon.js instead of (or as well as) the in-built mocking assertions. Some of the use cases include:

    • Developer preference/familiarity to Sinon.js
    • Migrating a code base from Mocha/Chai/Sinon to Jest
    • To be difficult

    Ultimately, it usually comes down to your own preferences and needs.

    Installation

    With npm:

    npm install --save-dev jest-sinon
    

    With yarn:

    yarn add -D jest-sinon
    

    Setup

    Jest 24+

    Add Jest-Sinon to your Jest setupFilesAfterEnv configuration.

    "jest"{
      "setupFilesAfterEnv": ["jest-sinon"]
    }

    Jest 23 or below

    "jest"{
      "setupTestFrameworkScriptFile": "./testSetup.js"
    }
    // testSetup.js
     
    require('jest-sinon');

    Usage

    Jest-Sinon adds a number of assertions to help test Sinon.js Spies, Mocks and Stubs. Below is a list of currently implemented assertions.

    .toHaveBeenAlwaysCalledOn(obj)

    Also under the alias: .toBeAlwaysCalledOn()

    .toHaveBeenAlwaysCalledWith(args1, arg2, ...)

    Also under the alias: .toBeAlwaysCalledWith()

    .toHaveBeenAlwaysCalledWithExactly(args1, arg2, ...)

    Also under the alias: .toBeAlwaysCalledWithExactly()

    .toHaveBeenAlwaysCalledWithMatch(arg1, arg2, ...)

    Also under the alias: .toBeAlwaysCalledWithMatch()

    .toHaveBeenAlwaysCalledWithNew()

    Also under the alias: .toBeAlwaysCalledWithNew()

    .toHaveBeenCalled()

    Also under the alias: .toBeCalled()

    .toHaveBeenCalledAfter(anotherSpy)

    Also under the alias: .toBeCalledAfter()

    .toHaveBeenCalledBefore(anotherSpy)

    Also under the alias: .toBeCalledBefore()

    .toHaveBeenCalledImmediatelyAfter(anotherSpy)

    Also under the alias: .toBeCalledImmediatelyAfter()

    .toHaveBeenCalledImmediatelyBefore(anotherSpy)

    Also under the alias: .toBeCalledImmediatelyBefore()

    .toHaveBeenCalledOn(obj)

    Also under the alias: .toBeCalledOn()

    .toHaveBeenCalledOnce()

    Also under the alias: .toBeCalledOnce()

    .toHaveBeenCalledOnceWith(arg1, arg2, ...)

    Also under the alias: .toBeCalledOnceWith()

    .toHaveBeenCalledOnceWithExactly(arg1, arg2, ...)

    Also under the alias: .toBeCalledOnceWithExactly()

    .toHaveBeenCalledThrice()

    Also under the alias: .toBeCalledThrice()

    .toHaveBeenCalledTwice()

    Also under the alias: .toBeCalledTwice()

    .toHaveBeenCalledWith(arg1, arg2, ...)

    Also under the alias: .toBeCalledWith()

    .toHaveBeenCalledWithExactly(arg1, arg2, ...)

    Also under the alias: .toBeCalledWithExactly()

    .toHaveBeenCalledWithMatch(arg1, arg2, ...)

    Also under the alias: .toBeCalledWithMatch()

    .toHaveBeenCalledWithNew()

    Also under the alias: .toBeCalledWithNew()

    .toHaveCallCount(number)

    Also under the alias: .toHaveBeenCalledTimes() and .toBeCalledTimes()

    .toHaveReturnedWith(obj)

    Also under the alias: .toReturnWith(), .toHaveReturned() and .toReturn()

    .toHaveAlwaysReturnedWith(obj)

    Also under the alias: .toAlwaysReturnWith()

    .toHaveThrown(error?)

    Also under the alias: .toHaveThrownError(), .toThrow(), and .toThrowError()

    .toHaveAlwaysThrown(error?)

    Also under the alias: .toHaveAlwaysThrownError(), .toAlwaysThrow() and .toAlwaysThrowError()

    For more information about what these do, you can visit Sinon.js.

    Contributing

    Pull requests for new features, bug fixes, and suggestions are welcome!

    Install

    npm i jest-sinon

    DownloadsWeekly Downloads

    7,548

    Version

    1.0.4

    License

    MIT

    Unpacked Size

    53.6 kB

    Total Files

    6

    Last publish

    Collaborators

    • avatar