Skip to content
← Back to rules

jest/no-done-callback スタイル

An auto-fix is available for this rule.

何を行うか

このルールは、フックやテストの関数パラメータに done 引数が使用されていないかをチェックし、代わりにプロミスを返すことを推奨します。

なぜ問題なのか

フックやテスト内で非同期コードを呼び出す場合、Jest は非同期処理が完了したタイミングを把握する必要があります。これにより、現在の実行を続行できます。 当初、この目的を達成する最も一般的な方法としてコールバックを使用していました:

javascript
test("データはピーナッツバターです", (done) => {
  function callback(data) {
    try {
      expect(data).toBe("ピーナッツバター");
      done();
    } catch (error) {
      done(error);
    }
  }

  fetchData(callback);
});

しかしながら、この方法は非常に誤りやすいです。アサーションの動作について正確に理解していなければ、テストの振る舞いが期待通りにならない可能性があります。

このルールに対して不正なコードの例:

javascript
beforeEach((done) => {
  // ...
});

test("myFunction()", (done) => {
  // ...
});

test("myFunction()", function (done) {
  // ...
});

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下のように使用できます:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/no-done-callback": "error"
  }
}
bash
oxlint --deny jest/no-done-callback --jest-plugin

参照