JavaScriptJestNode.jsTypeScript

Testing TypeScript by Jest

We start to learn how to run the test for TypeScript by Jest. Install Set Jest configuration You can put the J […]

広告ここから
広告ここまで

We start to learn how to run the test for TypeScript by Jest.

Install

$ npm init -y
$ npm i -D jest ts-jest @types/jest typescript

Set Jest configuration

You can put the Jest config in the package.json.

{
  ...
  "scripts": {
    "build": "tsc",
    "test": "jest"
  },
  "devDependencies": {
    "@types/jest": "^23.3.10",
    "jest": "^23.6.0",
    "ts-jest": "^23.10.5",
    "typescript": "^3.2.2"
  },
  "jest": {
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ],
    "transform": {
      "^.+\.(ts|tsx)$": "ts-jest"
    },
    "globals": {
      "ts-jest": {
        "tsConfigFile": "tsconfig.json"
      }
    },
    "testMatch": [
      "**/__tests__/*.+(ts|tsx|js)"
    ]
  }
}

Make a testing target code

$ vim index.ts
export const helloWorld = (name: string): string => `Hello ${name}`

The function helloWorld()will return Hello {YOUR_NAME}when we put the name.

Write a test

$ mkdir __tests__/
$ vim __tests__/index.test.ts
import { helloWorld } from '../index';

test('basic', () => {
  expect(helloWorld('John')).toBe('Hello John');
});

test('Failed', () => {
  expect(helloWorld()).toBe('Hello ');
});

Finally, we can run the test by npm test.

$ npm test
 FAIL  __tests__/index.test.ts
  ● Test suite failed to run

    TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
    __tests__/index.test.ts:8:10 - error TS2554: Expected 1 arguments, but got 0.

    8   expect(helloWorld()).toBe('Hello John');
               ~~~~~~~~~~~~

      index.ts:5:28
        5 export const helloWorld = (name: string): string => `Hello ${name}`
                                     ~~~~~~~~~~~~
        An argument for 'name' was not provided.

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        1.622s, estimated 2s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts