Jest 在测试运行完成后一秒没有退出

use*_*674 6 reactjs jestjs react-native

我通过运行测试用例得到以下错误:

测试运行完成后,Jest 一秒钟都没有退出。这通常意味着测试中存在未停止的异步操作。考虑运行 Jest--detectOpenHandles以解决此问题。

--ForceExit我用以及运行了测试用例--detectOpenHandles。但我没有解决这个错误。

小智 3

test("Fetch Token ", async done => {
  await getToken("DEV", "myApp", token => {
    console.log("AuthToken: ", authToken);
    expect(authToken).toBeFalsy();
  });
  done();
});
Run Code Online (Sandbox Code Playgroud)

2可能原因:

  • 您的异步请求getToken使用了错误的变量,而不是authToken,而是token
test("Fetch Token ", async done => {
  await getToken("DEV", "myApp", token => {
    console.log("AuthToken: ", token);
    expect(token).toBeFalsy();
  });
  done();
});
Run Code Online (Sandbox Code Playgroud)
  • 您的异步请求响应时间太长,请尝试增加笑话超时jest.setTimeout(5000)

建议

当你使用async-await时,你不需要使用done。

  • 与异步等待
test("Fetch Token ", async done => {
  await getToken("DEV", "myApp", token => {
    console.log("AuthToken: ", token);
    expect(token).toBeFalsy();
  });
  done();
});
Run Code Online (Sandbox Code Playgroud)
  • 没有异步等待
test("Fetch Token ", async done => {
  const authToken = await getToken("DEV", "myApp", token => {
    return token;
  });
  console.log("AuthToken: ", authToken);
  expect(authToken).toBeFalsy();
  done();
});
Run Code Online (Sandbox Code Playgroud)