Skip to content
← Back to rules

jest/no-done-callback 风格

An auto-fix is available for this rule.

它的作用

此规则检查钩子和测试函数参数中对 done 参数的使用,建议改用返回一个承诺(promise)的方式。

为什么这是个问题?

在钩子和测试中调用异步代码时,Jest 需要知道异步操作何时完成,才能继续当前的执行流程。
最初实现这一目标最常见的方式是使用回调:

javascript
test("数据是花生酱", (done) => {
  function callback(data) {
    try {
      expect(data).toBe("peanut butter");
      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

参考资料