I am trying to write a test that uses a mock implementation of request-promise with defaults set.
In my code, I require request using
const request = require('request-promise').defaults({ jar: true });
In my test file, I have tried
const request = require('request-promise');
jest.mock('request-promise');
request.mockImplementation(() => Promise.resolve(JSON.stringify(someVar)));
// This returns the error 'TypeError: request is not a function'
const request = require('request-promise').defaults({ jar: true });
jest.mock('request-promise');
request.mockImplementation(() => Promise.resolve(JSON.stringify(someVar)));
// This returns the error 'TypeError: Cannot read property 'mockImplementation' of undefined'
const request = require('request-promise').defaults({ jar: true });
jest.mock('request-promise').defaults({ jar: true });
request.mockImplementation(() => Promise.resolve(JSON.stringify(someVar)));
// This returns the error 'TypeError: jest.mock(...).defaults is not a function'
const request = require('request-promise').defaults({ jar: true });
jest.mock(('request-promise').defaults({ jar: true }));
request.mockImplementation(() => Promise.resolve(JSON.stringify(someVar)));
// This returns the error 'TypeError: "request-promise".defaults is not a function'
My function looks like
const request = require('request-promise').defaults({ jar: true });
const getData = async function getData(
previousRequestResponse,
uniqueId,
) {
// Below function carries out some manipulation of previous response
const body = await getRequestBody(previousRequestResponse);
const response = await request(method, url, body, headers)
.then(response => JSON.parse(response.body))
.catch((err) => {
Logger.error('Failed');
Logger.error(`ERROR - ${err.message}`);
throw err;
});
const newResponse = manipulate(response);
return newResponse;
};
I want to mock request, so that response is a stubbed value and I can assert the correct value is returned at the end of the function.