
最近はJavaScriptのテストツールとしてmochaやnycの代わりにJestを使うことが多くなってきました。今回は、CircleCI 2.0とCodecovでNodeJSアプリケーションのテストカバレッジを測定する方法をJestを使った場合で紹介します。
はじめに
以前の「CircleCI 2.0とCodecovでNodeJSアプリケーションをテストしてカバレッジを測定する方法(CircleCI 2.0のDockerコンテナ利用版)」という記事で、CircleCI 2.0とCodecovでテストカバレッジを測定する方法を紹介しましたが、その時はテストツールとして、mochaとnycで使っていました。今回は、以前の記事の内容を、テストツールとしてJestを使う形で紹介します。
前提
以下を前提とします。詳しくは以前の記事を見て下さい。
- GitHubのアカウントがあること
- CircleCIのアカウントがあること
- CodeCovのアカウントがあること
- 何かしらのNodeJSアプリケーションを作ってあること
必要なパッケージをインストールする
それでは始めましょう。プロジェクトに行き、Jestをインストールします。
$ cd my-nodejs-with-test-project
$ yarn add --dev jest
package.jsonにコマンドを追加する
Package.jsonにJestの設定と、テストの実行コマンドを追加します。
$ vi package.json
...
"jest": {
"testRegex": "(/__tests__/.*|(\.|/)(test|spec))\.js$",
"coveragePathIgnorePatterns": [
"/node_modules/",
"/tests/"
],
"coverageThreshold": {
"global": {
"branches": 90,
"functions": 90,
"lines": 90,
"statements": 90
}
},
"rootDir": "server/"
},
...
"scripts": {
...
"test": "jest --watchAll --coverage",
"coverage": "jest --forceExit --coverage --coverageReporters=\"text-lcov\" > coverage.lcov",
"test-ci":
"yarn coverage",
...
}
Jestのデフォルトのテストフォルダは「__tests__」、テストファイルのフォーマットは「∗.test.js」または「∗.spec.js」です。自分のディレクトリ構成に合わせて修正したい場合は上記のtestRegexを修正して下さい。カバレッジはcoverageThresholdで基準値を設定できます。今回は全て90%にしています。
CircleCIのファイルをを作る
CircleCIの設定ファイルは以下になります。
$ mkdir .circleci
$ touch .circleci/config.yml
$ vi .circleci/config.yml
version: 2
jobs:
build:
working_directory: ~/repo
docker:
- image: circleci/node:9.8.0
- image: circleci/mongo:3.6.3
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run: yarn install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: Wait for db
command: dockerize -wait tcp://localhost:27017 -timeout 1m
- run:
name: Test
command: |
yarn test-ci
GitHubにPushする
テストを書いたら、最後にGitHubにPushします。
$ git add .
$ git commit -m 'Add CICD configs'
$ git push origin master
CircleCIでビルドおよびテストが実行され、Codecovにカバレッジが連携されれば成功です。
最後に
いかがでしたか?Jestを使って、CircleCI 2.0とCodecovでテスト実行とカバレッジ測定ができるようになりましたね。Jestは本当に使いやすいので良いですよ。それでは。