@xunnamius/jest-types
This package contains several TypeScript utility types and helper functions for use with Jest-based projects.
Install
npm install --save-dev @xunnamius/jest-types
Usage
You can use this library's exports in your TypeScript projects like so:
import type { X } from '@xunnamius/jest-types'
const x: X = 'y';
Type and Constant Glossary
This package exports the following: (none yet)
Function Glossary
The following functions are available:
asMockedFunction
See the docs for interface description.
This function returns fn
or a function type T
wrapped with Jest mock type
definitions via jest.MockedFunction
.
import execa from 'execa';
import debugFactory from 'debug';
import type { Debugger } from 'debug';
import type { ExecaChildProcess } from 'execa';
jest.mock('execa');
jest.mock('debug');
const mockedExeca = asMockedFunction(execa);
const mockedDebug = asMockedFunction<Debugger>();
// ...
beforeEach(() => {
mockedDebug.extend =
asMockedFunction<Debugger['extend']>().mockReturnValue(mockedDebug);
asMockedFunction(debugFactory).mockReturnValue(mockedDebug);
mockedExeca.mockImplementation(
() =>
Promise.resolve({
/* ... */
}) as ExecaChildProcess<Buffer>
);
});
// ...
it('throws and outputs to CLI when doing a thing that fails', async () => {
expect.hasAssertions();
doThingThatFails(); // <== calls execa internally
expect(mockedDebug).toBeCalledWith(expect.stringContaining('failed!'));
});
asMockedClass
See the docs for interface description.
This function returns returns classConstructor
or a constructor type T
wrapped with Jest mock type definitions via jest.MockedClass
.
import { Db, MongoClient } from 'mongodb';
jest.mock('mongodb');
const mockMongoClient = asMockedClass(MongoClient);
beforeEach(() => {
mockMongoClient.connect = jest.fn((url: string) =>
Promise.resolve(
new (class {
// ...
})() as unknown as MongoClient
)
);
});
it("creates client only if it doesn't already exist", async () => {
expect.hasAssertions();
getMemoizedClientConnection();
getMemoizedClientConnection();
getMemoizedClientConnection();
expect(mockMongoClient.connect).toHaveBeenCalledTimes(1);
});
Documentation
Further documentation can be found under docs/
.
License
Contributing and Support
New issues and pull requests are always
welcome and greatly appreciated!
See CONTRIBUTING.md and SUPPORT.md for more information.