⌨️
Jestにeslint-plugin-jestを設定する
はじめに
- Jestを使用して複数人でテストコードを実装していると、メンバーごとに書き方が違って統一感が無くなった経験はありませんか?
-
ESLintのpluginに
eslint-plugin-jest
というものがあり、それを使用することでJestのルールを統一することが出来ます。この記事ではeslint-plugin-jest
の設定方法などを記載します。
対象読者
- Jest初心者で書き方を学びたい方
- チーム内のJestの書き方を統一したい方
eslint-plugin-jestとは
- Jest CommunityがメンテナンスをしているJest向けのESLintルールです。
-
it
、test
やtoBeCalledWith()
、toHaveBeenCalledWith()
などのように同じことが複数のメソッドで出来るので、どちらを使用するか強制することが出来ます。 - テストタイトル名や
describe
のネスト数など細かい部分のルール設定も可能です。
動作環境
- Node.js: 14.x
- jest: 27.5.x
- eslint: 8.10.x
- eslint-plugin-jest: 26.1.x
サンプルコード
eslint設定
.eslintrc.json
{
"env": {
"jest/globals": true,
"es6": true
},
"plugins": [
"jest"
],
"extends": [
"plugin:jest/recommended",
"plugin:jest/style"
],
"rules": {
"jest/consistent-test-it": ["error", {"fn": "it"}],
"jest/require-top-level-describe": ["error"]
}
}
-
plugins
にjest
を設定します。 -
extends
にplugin:jest/recommended
とplugin:jest/style
のルールを設定します。-
plugin:jest/all
-eslint-plugin-jest
の全てのルールが設定されます。メジャーバージョン以外でもルールが変更されるため設定時は注意してください。 -
plugin:jest/recommended
- 推奨ルール一式が設定されます。 -
plugin:jest/style
- スタイルルール系が設定されます。
-
-
rules
に個別のルールを設定します。今回は以下のルールを設定しています。-
jest/consistent-test-it
-it
またはtest
のどちらを使用するか設定する。今回はit
を使用するように設定します。 -
jest/require-top-level-describe
-describe
内に必ずit
やtest
を配置します。
-
Jest設定
jest.config.js
// テスト対象のファイルを指定します。
module.exports = {
moduleFileExtensions: ['js'],
testMatch: ['<rootDir>/test/**/*.+(ts|js)']
};
テストコード
test/sample.js
function calc(a, b) {
return a + b;
}
describe('sample test', () => {
it('calc 1 + 2 = 3', () => {
const actual = calc(1, 2);
expect(actual).toBe(3);
});
// テストタイトルがdescribe内で重複(jest/no-identical-title)
it('calc 1 + 2 = 3', () => {
const actual = calc(1, 3);
expect(actual).toBe(4);
});
// itではなくtestを使用(jest/consistent-test-it)
test('calc 2 + 2 = 4', () => {
const actual = calc(2, 2);
expect(actual).toBe(4);
});
});
// describe内にitを配置していない(jest/require-top-level-describe)
it('calc 3 + 1 = 4', () => {
const actual = calc(3, 1);
expect(actual).toBe(4);
});
動作確認
エラー表示 - ESLint CLI
-
eslint
を実行することでeslint-plugin-jest
のルールに違反している箇所が一覧表示されます。 - テストコードのコメントに記載のエラー内容が表示されます。
-
eslint --fix
をすることでルール違反箇所で置き換え可能な箇所を一括置換出来ます。
エラー表示 - VSCode
- Visual Studio CodeのESLint拡張機能をインストールすることでエディタ上にESLintのエラー内容が表示されます。
-
.vscode/settings.json
のeditor.codeActionsOnSave > source.fixAll.eslint
をtrue
にすることで、ファイル保存時に自動的にeslint --fix
が実行されるようになります。
-
- Error Lens拡張機能を使用してエラー内容をエディタ上に強調表示しています。
おわりに
-
eslint-plugin-jest
を使用することによりテストコードに対して一定の秩序を保つことが出来るようになりました。 -
eslint --fix
や各種エディタの拡張機能などによって、ルールに沿った実装に自動修正されるので、そこまでストレスなくルールを導入することが可能です。
ソースコード一式
参考サイト
Discussion