即使第一个测试被评论,测试也不会通过

问题描述 投票:0回答:1

[当我遇到一个似乎无法弄清的问题之类的错误时,我正在为某些身份验证端点编写测试。

test不会通过:

it("Testing /auth/signup/lol", () => {
  const test = true;
  expect(test).toBe(true);
  console.log("finished test?");
});

我可以重现此问题的唯一方法是获取所有设置和拆卸代码,然后将其移至另一个文件,以及使我感到困扰的测试(正如我所做的那样,该测试是从auth.test.js复制的)。

我花了整整一天的时间来弄清问题,唯一的测试通过是我删除了设置代码。但是,在notebooks.test.js和auth.test.js(不包括auth.tests.js脚本底部的最后两个三个测试)上,设置代码可以按预期工作。

此代码有什么问题?

复制步骤:

  1. 克隆此存储库
  2. 切换到develop分支
  3. 转到后端目录
  4. 安装所有软件包
  5. 运行'npm test tests / endpoints / auth2.test.js'

我会发布一个小程序来重现该问题,但是所有尝试都失败了。

jestjs jest
1个回答
0
投票

afterEach()方法中存在超时,因为collections.users.drop()返回一个未定义的值(结果未定义)。至少要在测试结果值时添加else子句,以便可以在达到10秒超时之前退出方法。也许需要一些额外的代码,但我不知道您的代码和测试的逻辑,所以也许afterEach应该做更多的事情。这是工作代码:

afterEach(done => {
    server.getTokenManager().empty()
    let collections = server.getClient()?.connection.collections
    if (collections === undefined) {
        done()
        return
    }
    if (collections.users !== undefined) {
        collections.users.drop((err: any, result: any) => {
            if (result) {
                done()
            } else {
                done()
            }
        })
    }
}, 10000)

其余的代码都可以。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.