mockzilla
v0.14.0
Published
A mocking toolkit leveraging the power of TypeScript to enhance your jest experience.
Downloads
972
Readme
mockzilla
mockzilla is a mocking toolkit leveraging the power of TypeScript to enhance your jest experience.
This is a Work In Progress! The API might change before version 1.0 is released.
Features
- Deep Mocking
- Mock Assimilation (replace methods of an existing object with mocks)
- Time Manipulation
- Property protection & whitelisting
Why use mockzilla
- Integrates with jest
- Typesafety and code-completion out of the box.
- Deadsimple to use
- Liberal license: zlib/libpng
Getting Started
Check out the documentation page for examples
Example
This is an example of how a deep mock with mockzilla looks like:
import type { Browser } from "webextension-polyfill-ts";
import { deepMock, MockzillaDeep } from "mockzilla";
const [browser, mockBrowser, mockBrowserNode] = deepMock<Browser>("browser", false);
jest.mock("webextension-polyfill-ts", () => ({ browser }));
describe("Web-Extension Helpers", () => {
beforeEach(() => mockBrowserNode.enable());
afterEach(() => mockBrowserNode.verifyAndDisable());
describe("getActiveTabs()", () => {
it("should return active tabs", async () => {
const tabs: any[] = [{id: 1}, {id: 2}];
mockBrowser.tabs.query.expect({ active: true }).andResolve(tabs);
expect(await getActiveTabs()).toEqual(tabs);
});
});
describe("onBeforeRedirect()", () => {
it("should register a listener and return a handle to remove the listener again", () => {
const listener = jest.fn();
mockBrowser.webRequest.onBeforeRedirect.addListener.expect(listener, expect.anything());
const removeListener = onBeforeRedirect(listener);
mockBrowser.webRequest.onBeforeRedirect.removeListener.expect(listener);
removeListener();
});
});
});
Report issues
Something not working quite as expected? Do you need a feature that has not been implemented yet? Check the issue tracker and add a new one if your problem is not already listed. Please try to provide a detailed description of your problem, including the steps to reproduce it.
Contribute
Awesome! If you would like to contribute with a new feature or submit a bugfix, fork this repo and send a pull request. Please, make sure all the unit tests are passing before submitting and add new ones in case you introduced new features.
License
mockzilla has been released under the zlib/libpng license, meaning you can use it free of charge, without strings attached in commercial and non-commercial projects. Credits are appreciated but not mandatory.