0.1.1 • Published 2 years ago

jest-matcher-called-with-once v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

jest-matcher-called-with-once

Adds .toHaveBeenCalledWithOnce() to your Jest expect() matchers.

expect(spy).toHaveBeenCalledWithOnce(...args) passes if the Jest spy has been called any number of times, exactly one of them with the given arguments.

Note: this matcher does not require spy to have been called only once. It could have been called multiple times with other arguments. But there must have been exactly one call with arguments given to the matcher.

Installation

With yarn:

yarn add --dev jest-matcher-called-with-once`

With npm:

npm i -D jest-matcher-called-with-once`

Usage

import { toHaveBeenCalledWithOnce } from 'jest-matcher-called-with-once';

expect.extend({ toHaveBeenCalledWithOnce });

describe('test myModule', () => {
    it('should return 42', () => {
        const mySpy = jest.fn();
        
        mySpy(11, 22, 33);
        mySpy(444, 555);
        mySpy(444, 555);
        
        expect(mySpy).toHaveBeenCalledWithOnce(11, 22, 33);
        // ^^ There was exactly one call with these args
      
        expect(mySpy).not.toHaveBeenCalledWithOnce(444, 555);
        // ^^ `.not` because there were two calls with these args
    });
});

This matcher is useful when you're asserting on a function that could have been called multiple times with various arguments, and you want to make sure that you've called it exactly once with your arguments.

A common use case would be spying on a function that handles various events. You only want to make sure that it received your event exactly once, and want to ignore other calls.

License

MIT