jest-mock-module
v0.2.1
Published
Project description
Downloads
145
Readme
Jest Mock Module
Extends jest to allow deep auto mocking of a module by spying on all functions and properties.
Introduction
Getting Started
Install the extension using pnpm, npm, yarn etc.
npm install -D "jest-mock-module"
The Jest Object
The jest object needs to be extended in every test file. This allows access to the jest-mock-module
api.
jest.spy(moduleName)
This works like jest.doMock.
The main difference is a factory does not need to be provided as it automatically generates one using jest.createSpyFromModule
.
Internally uses jest.mock
so works with other jest
mocking methods.
jest.createSpyFromModule(moduleName)
This works like jest.createMockFromModule.
The main difference is the returned mock is created using jest.spyOnObject
.
jest.spyOnObject(object)
This creates a deep mock of the object spying on all the internal properties using jest-spy-on.
Example Usage
// src/example.js
module.exports = {
testing: "123";
nested: {
test: () => true;
testing: "456";
}
}
import * as mock from "jest-mock-module";
mock.extend(jest);
// Only to be used on valid modules
jest.spy("src/example");
// Since babel-jest does not hoist jest.spy
// import calls need to come after the spy mock
const example = require("src/example");
// Check module object properties
jest.isMockProp(example, "testing"); // true
console.log(example.testing); // 123
// Respy on module object to get mockable
jest.spyOn(example).testing.mockValueOnce("789");
console.log(example.testing); // 789
console.log(example.testing); // 123
// Check module nested object properties
jest.isMockMethod(example.nested.test); // true
jest.isMockProp(example.nested, "testing"); // true
It keeps the same structure of the module but replaces all functions and properties with jest mocks.
jest.createSpyFromModule
is exported and can be used likejest.createMockFromModule
. It is used internally byjest.spy
in combination withjest.mock
to provide a factory in place of Jest's automocking feature.
References
jest-spy-on
- Guide to spying on module methodsjest-mock-props
- Guide to spying on object properties