Socket
Socket
Sign inDemoInstall

ts-jest

Package Overview
Dependencies
10
Maintainers
1
Versions
194
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

ts-jest


Version published
Weekly downloads
12M
decreased by-5.28%
Maintainers
1
Install size
18.0 MB
Created
Weekly downloads
 

Package description

What is ts-jest?

ts-jest is an npm package that allows users to run tests written in TypeScript directly, without having to precompile them to JavaScript. It is a Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.

What are ts-jest's main functionalities?

TypeScript testing

This feature allows you to write Jest tests in TypeScript. The code sample demonstrates a simple test for a sum function.

import sum from './sum';
test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Source map support

Source map support for accurate stack traces in error messages, which is useful for debugging tests.

/* Source maps are automatically handled by ts-jest, so there's no specific code sample for this feature. It works under the hood to provide accurate stack traces in your tests. */

TypeScript configuration

Allows you to use your project's TypeScript configuration or specify a custom one for testing purposes.

/* ts-jest uses the tsconfig.json file in your project to understand how to compile your TypeScript code. You can also specify a different configuration file for ts-jest if needed. */

Coverage reports

Integrates with Jest's coverage reporting to include TypeScript files in coverage statistics.

/* To collect coverage, you can use Jest's built-in coverage collection feature with ts-jest. */
jest --coverage

Other packages similar to ts-jest

Readme

Source

ts-jest

npm version NPM downloads Greenkeeper badge

Build Status for linux Build Status for Windows

Table of Contents

Versioning

From version "jest": "17.0.0" we are using same MAJOR.MINOR as Jest. For "jest": "< 17.0.0" use "ts-jest": "0.1.13". Docs for it see here.

Usage

To use this in your project, run:

npm install --save-dev ts-jest

Modify your project's package.json so that the jest section looks something like:

{
  "jest": {
    "transform": {
      ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ]
  }
}

This setup should allow you to write Jest tests in Typescript and be able to locate errors without any additional gymnastics.

Coverage

Prior to version 20.0.0, coverage reports could be obtained using the inbuilt coverage processor in ts-jest. Starting with version 20.0.0, ts-jest delegates coverage processing to jest and no longer includes a coverage processor.

To generate coverage results, set the mapCoverage property in the jest configuration section to true.

React Native

There is a few additional steps if you want to use it with React Native.

Install babel-jest and babel-preset-react-native modules.

npm install -D babel-jest babel-preset-react-native

Ensure .babelrc contains:

{
  "presets": ["react-native"]
}

In package.json, inside jest section, the transform should be like this:

"transform": {
  "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
  ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
}

Fully completed jest section should look like this:

"jest": {
    "preset": "react-native",
    "transform": {
      "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
      ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ]
  }

If only testing typescript files then remove the js option in the testRegex.

Options

By default this package will try to locate tsconfig.json and use its compiler options for your .ts and .tsx files.

But you are able to override this behaviour and provide another path to your config for TypeScript by using __TS_CONFIG__ option in globals for jest:

{
  "jest": {
    "globals": {
      "__TS_CONFIG__": "my-tsconfig.json"
    }
  }
}

Or even declare options for tsc instead of using separate config, like this:

{
  "jest": {
    "globals": {
      "__TS_CONFIG__": {
        "module": "commonjs",
        "jsx": "react"
      }
    }
  }
}

Note that if you haven't explicitly set the module property in the __TS_CONFIG__ setting (either directly or through a separate configuration file), it will be overwritten to commonjs (regardless of the value in tsconfig.json) since that is the format Jest expects. This only happens during testing.

When using Jest with Angular (a.k.a Angular 2) apps you will likely need to parse HTML templates. If you're unable to add html-loader to webpack config (e.g. because you don't want to eject from angular-cli) you can do so by defining __TRANSFORM_HTML__ key in globals for jest.

{
  "jest": {
    "globals": {
      "__TRANSFORM_HTML__": true
    }
  }
}

You'll also need to extend your transform regex with html extension:

{
  "jest": {
    "transform": {
      "^.+\\.(ts|tsx|js|html)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    }
  }
}

For all available options see TypeScript docs.

Known limitations for TS compiler options

  • You can't use "target": "ES6" while using node v4 in your test environment;
  • You can't use "jsx": "preserve" for now (see progress of this issue);
  • If you use "baseUrl": "<path_to_your_sources>", you also have to change jest config a little bit:
"jest": {
  "moduleDirectories": ["node_modules", "<path_to_your_sources>"]
}

How to Contribute

If you have any suggestions/pull requests to turn this into a useful package, just open an issue and I'll be happy to work with you to improve this.

Quickstart to run tests (only if you're working on this package)

git clone https://github.com/kulshekhar/ts-jest
cd ts-jest
npm install
npm test

Note: If you are cloning on Windows, you may have to run git config --system core.longpaths true for Windows to stop complaining about long filenames.

License

Copyright (c) Authors. This source code is licensed under the MIT license.

Keywords

FAQs

Last updated on 06 May 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc