Jest

ts-jest

ts-jest is a jest pre-compiler that can be set in the preset field of the jest.config.js file to allow you to test typescript files.

To start using ts-jest you will need to install jest and the @types/jest packages as dependencies.

npm i -D jest ts-jest @types/jest

You can initialize your typescript jest testing project using the ts-jest config:init command.

npx ts-jest config:init

This will add ts-jest as a preset for configuring jest tests in the jest.config.js file. A jest preset is another module that contains a jest-preset file from which configuration for just can be loaded.

// jest.config.js
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
};

babel

You can use babel to facilitate testing by simply adding a babel.config.js file to your project’s root folder with the preset env and typescript modules configured.

// babel.config.js
module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    '@babel/preset-typescript',
  ],
};

You will also need to install dependencies with…

npm i -D babel-jest @babel/core @babel/preset-env @babel/preset-typescript

Now you can simply run the jest command to start tests and babel will automatically integrate typescript file. This somewhat more direct and easier than ts-jest however Babel does not type check test code which ts-jest does.