typescriptjestjs

Jest createSpyObj


With Chai, you can create a spy object as follows:

chai.spy.object([ 'push', 'pop' ]);

With jasmine, you can use:

jasmine.createSpyObj('tape', ['play', 'pause', 'stop', 'rewind']);

What's the Jest equivalent?

Context: I am currently migrating a (typescript) Jasmine tests to (typescript) Jest. The migration guide is basically useless in this case: https://facebook.github.io/jest/docs/migration-guide.html As with any relatively new tech, there's nothing that can easily be found in the docs about this.


Solution

  • I've written a very quick createSpyObj function for jest, to support the old project. Basically ported from Jasmine's implementation.

    export const createSpyObj = (baseName, methodNames): { [key: string]: Mock<any> } => {
        let obj: any = {};
    
        for (let i = 0; i < methodNames.length; i++) {
            obj[methodNames[i]] = jest.fn();
        }
    
        return obj;
    };