Environment:
CentOS Linux release 7.3.1611 (Core)
node v8.16.0
jest 24.8.0
Instantiating a new object inside method of test:
sampleOld.js
const cherryshoeAuthorization = require("cherry-shoe-auth");
const processValidRequest = async (requestType, jsonRequestData) => {
const authService = new cherryshoeAuthorization.CherryshoeAuthorization("cherryshoe.com");
const userData = await authService.getSessionData(jsonRequestData.token);
const dbResponse = await requestTypeHandlers[requestType](jsonRequestData, userData.username);
};
sampleOld.test.js
const unit = require(./sampleOld);
// import external dependencies for mocking
const cherryshoeAuthorization = require('cherry-shoe-auth');
// mock cherry-shoe-auth
jest.genMockFromModule('cherry-shoe-auth');
jest.mock('cherry-shoe-auth');
test('Test processValidRequests', async () => {
// mock external dependency method(s)
const mockCherryshoeAuthorization = {
getSessionData: jest.fn(),
}
cherryshoeAuthorization.CherryshoeAuthorization.mockImplementation(() => mockCherryshoeAuthorization);
// mock return values that external dependency method(s) will return
const userData = {
firstname: "firstname",
lastname: "lastname",
username: "username",
}
mockCherryshoeAuthorization.getSessionData.mockReturnValue(userData);
// unit under test
// function returns nothing so nothing to expect with a return
await expect(unit.processValidRequest(requestType, jsonRequest)).resolves;
// verify that mock method(s) were expected to be called
expect(mockCherryshoeAuthorization.getSessionData).toHaveBeenCalledTimes(1);
});
Break out instantiation of new object in a auth utility module:
sampleNew.js
const authUtils = require(./authUtils);
const processValidRequest = async (requestType, jsonRequestData) => {
const userData = await authUtils.getSessionData(jsonRequestData.token);
const dbResponse = await requestTypeHandlers[requestType](jsonRequestData, userData.username);
};
sampleNew.test.js
const unit = require(./sampleNew);
// import external dependencies for mocking
const authUtils = require(./authUtils);
test('Test processValidRequests', async () => {
const mockLoginUtilsGetSessiondata = authUtils.getSessionData =
jest.fn().mockName('mockLoginUtilsGetSessiondata');
// mock return values that external dependency method(s) will return
const userData = {
firstname: "firstname",
lastname: "lastname",
username: "username",
}
mockLoginUtilsGetSessiondata.mockReturnValue(userData);
// unit under test
// function returns nothing so nothing to expect with a return
await expect(unit.processValidRequest(requestType, jsonRequest)).resolves;
// verify that mock method(s) were expected to be called
expect(authUtils.getSessionData).toHaveBeenCalledTimes(1);
});
No comments:
Post a Comment
I appreciate your time in leaving a comment!