测试运行一秒钟后,Jest并没有退出

时间:2019-01-22 10:45:05

标签: reactjs react-native jestjs

运行测试用例时出现以下错误:

  

测试运行一秒钟后,Jest没有退出。   这通常意味着您的测试中没有停止异步操作。考虑使用--detectOpenHandles运行Jest来解决此问题。

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

2 个答案:

答案 0 :(得分:1)

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

2个可能的原因:

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

建议

当您使用异步等待时,您不需要使用done。

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

答案 1 :(得分:0)

  1. 检查是否有未关闭的数据库/ redis连接。
  2. 检查是否有任何计时器未清除。