Categories
JavaScript Answers

How to use actual function in a module when module is mocked in Jest?

Spread the love

Sometimes, we want to use actual function in a module when module is mocked in Jest.

In this article, we’ll look at how to use actual function in a module when module is mocked in Jest.

How to use actual function in a module when module is mocked in Jest?

To use actual function in a module when module is mocked in Jest, we can use the jest.requireActual method.

For instance, we write:

import {
  otherFn
} from './myModule.js'

jest.mock('./myModule.js', () => ({
  ...(jest.requireActual('./myModule.js')),
  otherFn: jest.fn()
}))

describe('test category', () => {
  it('tests something about otherFn', () => {
    otherFn.mockReturnValue('foo')
    expect(otherFn()).toBe('foo')
  })
})

to mock myModule with jest.mock but use the actual members in myModule to with jest.requireActual.

Then we mock otherFn in the same module by setting otherFn to jest.fn.

And then in our test, we call otherFn.mocklReturnValue to mock otherFn‘s return value.

Finally, we check otherFn‘s return value with toBe.

Conclusion

To use actual function in a module when module is mocked in Jest, we can use the jest.requireActual method.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *