Monday, August 28, 2017

Mock.mockImplementation() not working

Leave a Comment

I have a service class

Service.js

class Service { } export default new Service(); 

And I am trying to provide a mock implementation for this. If I use something like this:

jest.mock('./Service', () => { ... my mock stuff }); 

It works fine, however I'm not able to access any variables declared outside of the mock, which is a bit limiting as I'd like to reconfigure what the mock returns, etc.

I tried this (inspired by this other StackOverflow article: Service mocked with Jest causes "The module factory of jest.mock() is not allowed to reference any out-of-scope variables" error)

import service from './Service';  jest.mock('./Service', () => jest.fn);  service.mockImplementation(() => {     return { ... mock stuff } ); 

Unfortunately when I am trying to run this, I get the below error:

TypeError: _Service2.default.mockImplementation is not a function 

1 Answers

Answers 1

The mock is equal to jest.fn. You need to call jest.fn to create a mocked function.

So this:

jest.mock('./Service', () => jest.fn); 

Should be:

jest.mock('./Service', () => jest.fn()); 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment