Note: Looking for collaborators. Want to help improve ts-jest?
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:
This setup should allow you to write Jest tests in Typescript and be able to locate errors without any additional gymnastics.
Prior to version
20.0.0, coverage reports could be obtained using the inbuilt coverage processor in
ts-jest. Starting with version
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
Please note that the
outDirproperty in the
jestconfiguration section is removed in coverage mode, due to #201.
There is a few additional steps if you want to use it with React Native.
npm install -D babel-jest babel-preset-react-native
jest section, the
transform should be like this:
Fully completed jest section should look like this:
If only testing typescript files then remove the
js option in the testRegex.
You might want to use ES6 default imports, which will allow you to write things like
import React from 'react';
In that case you can add the following to your
This will make ts-loader send the compiled typescript code through babel, and the above import will resolve.
This configuration will allow
debugger statements to work properly in both WebStorm and VSCode.
Breakpoints currently only work in WebStorm.
By default this package will try to locate
tsconfig.json and use its compiler options for your
But you are able to override this behaviour and provide another path to your config for TypeScript by using
__TS_CONFIG__ option in
Or even declare options for
tsc instead of using separate config, like this:
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
You'll also need to extend your
transform regex with
For all available options see TypeScript docs.
"target": "ES6"while using
node v4in your test environment;
"jsx": "preserve"for now (see progress of this issue);
"baseUrl": "<path_to_your_sources>", you also have to change
jest configa little bit:
If you have dependencies on npm packages that are written in TypeScript but are
not published in ES5 you have to tweak your configuration. For example
you depend on a private scoped package
@foo/bar you have to add following to
your Jest configuration:
// ..."transformIgnorePatterns":"<rootDir>/node_modules/(?!@foo)"// ...
By default Jest ignores everything in
node_modules. This setting prevents Jest from ignoring the package you're interested in, in this case
@foo, while continuing to ignore everything else in
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.
git clone https://github.com/kulshekhar/ts-jestcd ts-jestnpm installnpm 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.