はじめに
最近、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が生成される。
この設定ファイルを以下に変更。
module.exports = {
preset: 'ts-jest',
testEnviroment: 'node'
}
TypeScriptのコードをテストしたい場合はpresetの値をts-jestにする必要がある
また、テストから除外したい場合は
testPathIgnorePatterns: ["指定したディレクトリ"]
デフォルトではnode_modulesフォルダが除外されている。
5.テストの実行
test.tsがファイル名に含まれているものがテストコードのファイルになる。
例として挙げるなら、sample.test.tsのような感じ。
テスト対象となるソースコードはexportし、テストコードのファイルでimportする必要がある。
"scripts": {
"test": "jest"
}
package.jsonに上の記述を追加すると
npm run testでjestの実行が行えるようになる
6.mockの設定
jest.fnで関数をmock化できる
(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する。
module.exports = {
preset: 'ts-jest',
testEnviroment: 'jsdom'
}
8.coverageを出力するためのパッケージのインストール
カバレッジを出力する場合は
テスト実行時に --coverageオプションを付けるだけ
jest --coverage
参考にさせていただいた記事
https://jestjs.io/ja/docs/getting-started
https://typescriptbook.jp/tutorials/jest