Jest.js 测试失败时运行速度极慢

6ovsh4lw  于 2023-02-01  发布在  Jest
关注(0)|答案(1)|浏览(224)

我有一个jest测试文件,如下所示:

import Client from "socket.io-client"

describe("my awesome project", () => {
    let clientSocket;

    beforeAll((done) => {
        clientSocket = new Client(`http://localhost:3000`);
        clientSocket.on("connect", done);
    });

    afterAll(() => {
        clientSocket.close();
    });

    it("should work", (done) => {
        clientSocket.on("redacted", (message) => {
            expect(2 + 2).toBe(56);
            //expect(message === "foobar").toEqual(true);
            done();
        });
        clientSocket.emit("redacted", "world");
    });
});

这是POC,目前是整个实施。
配置如下所示:

export default {
  // Automatically clear mock calls, instances, contexts and results before every test
  clearMocks: true,

  // Indicates whether the coverage information should be collected while executing the test
  collectCoverage: true,

  // The directory where Jest should output its coverage files
  coverageDirectory: "coverage",

  // Indicates which provider should be used to instrument code for coverage
  coverageProvider: "v8",

  // A preset that is used as a base for Jest's configuration
  preset: "ts-jest",
};

这正是--intit命令生成的文件。
我的问题的核心是,我使用的任何expect都会导致测试失败,无论多么微不足道的事情都需要花费大量的时间才能完成。我不小心让它像上面那样运行了一夜,它最终在14个小时内完成。
但是,如果测试通过,Jest绝对没问题,而且很快就能完成。例如,expect(2 + 2).toBe(4);运行得很好。在失败的测试中,我看到数据在预期的时间内从套接字返回。只有当expect被命中时,它才会停止。所以,我不认为问题出在套接字设置或某种通信问题上。
我尝试过基于配置的解决方案,但发现没有效果-例如Jest - Simple tests are slow
这是在我的本地windows机器上从一个终端运行的,我在IDE上的每个测试中都要完全启动和停止。

sr4lhrrt

sr4lhrrt1#

好吧,现在我明白问题所在了,我需要一个尝试性的接球。
真不敢相信我看过的例子或文档中没有一个暗示这是处理如此基本的东西所必需的。

test("should work", (done) => {
        clientSocket.on("redacted", (message: string) => {
            try {
                expect(2 + 2).toBe(56);
                //expect(message === "foobar").toEqual(true);
                done();
            } catch (err) {
                done(err)
            }

        });
        clientSocket.emit("redacted", "world");
    });

相关问题