2
0

More than 1 year has passed since last update.

はじめに

最近、TypeScriptに入門しました。
jestについて個人的な備忘録として記事を執筆しました。

この記事でまとめたこと

TypeScriptでjestを使ったテストの実行方法
jestの各種設定

jestとは?

javascriptのテストを実施するためのフレームワーク。
この記事ではTypescriptのjestの記事となっていますが、ReactやVueのテストなどもjestで行えます。

jestの設定方法

1.node.jsのインストール

まずはNode.jsのインストールを行う
https://nodejs.org/ja
上がnode.jsの公式サイト。
こちらからダウンロードを行う。

2.PJの新規作成

Node.jsをインストールした後は
指定のフォルダで

npm init

プロジェクトの新規作成

npm install typescript

TypeScriptをインストール
※npm install時に -g オプションを付けると、グローバルでインストールされる。
ただ、各PJでバージョンを分けたい場合は-gオプションを付けずにインストールを行う。

3.jest関係のパッケージのインストール

npm install jest

npm install ts-jest

npm install @types/jest

ts-jestを入れることでTypeScriptを一々、コンパイルせずにテストが行えるようになる。
@types/jestはテストコードの型チェックを行いたい場合に必要になるのでインストール。

4.typescriptでテスト時の設定ファイル作成

npx ts-jest config:init

上のコマンドを実行すると、jest.config.jsが生成される。
この設定ファイルを以下に変更。

jest.config.js
module.exports = {
  preset: 'ts-jest',
  testEnviroment: 'node'
}

TypeScriptのコードをテストしたい場合はpresetの値をts-jestにする必要がある

また、テストから除外したい場合は

jest.config.js
testPathIgnorePatterns: ["指定したディレクトリ"]

デフォルトではnode_modulesフォルダが除外されている。

5.テストの実行

test.tsがファイル名に含まれているものがテストコードのファイルになる。
例として挙げるなら、sample.test.tsのような感じ。
テスト対象となるソースコードはexportし、テストコードのファイルでimportする必要がある。

package.json
"scripts": {
  "test": "jest"
}

package.jsonに上の記述を追加すると
npm run testでjestの実行が行えるようになる

6.mockの設定

jest.fnで関数をmock化できる

sample.test.ts
(global as any).fetch = jest.fn(() =>
  Promise.resolve({
    'json' () => Promise.resolve({"hoge": "hogehoge"})
  })
);

これはfetchをmock化した例。

https://jestjs.io/ja/docs/mock-functions#%E3%83%A2%E3%83%83%E3%82%AF%E9%96%A2%E6%95%B0%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B
詳しくは公式ドキュメントを参照。

7.DOMのテスト

npm install jest-environment-jsdom

外部のHTMLファイルを読み込みたい場合はNode.jsのfsモジュールをrequireする。

jest.config.js
module.exports = {
  preset: 'ts-jest',
  testEnviroment: 'jsdom'
}

8.coverageを出力するためのパッケージのインストール

カバレッジを出力する場合は
テスト実行時に --coverageオプションを付けるだけ

jest --coverage

参考にさせていただいた記事

https://jestjs.io/ja/docs/getting-started
https://typescriptbook.jp/tutorials/jest

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0