测试运行一秒钟后,Jest没有退出。 --detectOpenHandles

时间:2018-08-30 19:32:00

标签: graphql jestjs apollo apollo-server

我要测试与Jest一起运行的后端服务器。 它有时会成功,但有时它会显示这样的错误。 enter image description here

因此,如果我按照建议使用--detectOpenHandles标志,它将始终成功而不显示eny错误。 这是测试代码。

  it("should be able to initialize a server (development)",async (done) => {
      // Before main() is called there is no active connection:

    expect(connection.readyState).toBe(0);
    return main({
      env: "dev",
      port: PORT,
    })
    .then(async (server: ApolloServer) => {
        // After main() got called, there is an active connection:
      expect(connection.readyState).toBe(1);
      await server.stop();
      done();
    })
  });
  afterAll(async () => {
    await connection.close(); //connection is mongoose.connection
  });

我不确定为什么在标记时失败。 有时候它成功了,而另一些时候却失败了,这很奇怪。

谢谢

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并通过在传递给afterAll的函数中返回一个promise来设法解决了这个问题。例如:

afterAll(() => {
  return connection.close(); // connection.close() returns a promise
});

Docs for reference

答案 1 :(得分:0)

与用户的问题无关,但仍然导致标题中的问题:

testEnvironment: 'node',中的testEnvironment: 'jsdom',jest.config.js似乎可以解决此问题。