@xunnamius/jest-types

Various constants, utility types, and typed functions for Jest-based projects

Usage no npm install needed!

<script type="module">
  import xunnamiusJestTypes from 'https://cdn.skypack.dev/@xunnamius/jest-types';
</script>

README

Black Lives Matter! Maintenance status Last commit timestamp Open issues Pull requests Codecov Source license Tree shaking support Compressed package size NPM version Uses Semantic Release!

@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

FOSSA analysis

Contributing and Support

New issues and pull requests are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟 this project to let me know you found it useful! ✊🏿 Thank you!

See CONTRIBUTING.md and SUPPORT.md for more information.