0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

keitamaxAdvent Calendar 2024

Day 3

ESLintのプラグインのテストを作成する

Last updated at Posted at 2024-12-03

はじめに

こんにちは、エンジニアのkeitaMaxです。

前回作成したESLintのテストを作成していきます。

やりたいこと

以下がエラーになっていて、

    const a = [1, 2, 3]
    const b = []
    a.map(i => b.push(i))

以下がエラーにならない、というようなことを確認するテストを作りたいと思います。

    const a = [1, 2, 3]
    const b = []
    a.foreach(i => b.push(i))

Jestのインストール

以下コマンドでJestをインストールします。

npm install --save-dev jest
npm install --save-dev ts-jest

package.jsonに以下を追加します。

package.json
  "scripts": {
    "build": "tsc",
    "test": "jest test/*.ts" // 追加
  },

テスト作成

以下のようにtestフォルダを作成し、notUsePushInMap.tsをその配下に作成しました。

eslint-plugin-hitasura-system-develop
├─ src
│  ├─ index.ts
│  └─ rules
│     └─ notUsePushInMap.ts
└─ test
   └─ notUsePushInMap.test.ts

テストは以下のように記載しました。

notUsePushInMap.test.ts
const { RuleTester } = require("eslint")
const rule = require("../lib/rules/notUsePushInMap")

const tester = new RuleTester()

tester.run("rule", rule, {
  valid: [
    { code: "const a = [1, 2, 3];const b = [];a.foreach(i => b.push(i))" }
  ],
  invalid: [
    { code: "const a = [1, 2, 3];const b = [];a.map(i => b.push(i))", errors: [{ message: "Do not use push inside a map method." }] }
  ]
})

エラーにならないものはvalidに、エラーになるものはinvalidに入れてテストを書いています。

実行

以下のコマンドでテストを実行します。

npm run test 
% npm run test

> eslint-plugin-hitasura-system-develop@0.0.5 test
> jest test/*.ts

 PASS  test/notUsePushInMap.test.ts
  rule
    valid
      ✓ const a = [1, 2, 3];const b = [];a.foreach(i => b.push(i)) (16 ms)
    invalid
      ✓ const a = [1, 2, 3];const b = [];a.map(i => b.push(i)) (3 ms)

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.019 s, estimated 2 s
Ran all test suites matching /test\/notUsePushInMap.test.ts/i.

テストが成功しているのがわかります。

おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

参考

次の記事

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?