首页 > 解决方案 > 开玩笑测试不会通过,即使第一个测试被评论

问题描述

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

测试不会通过:

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. 切换到开发分支
  3. 进入后台目录
  4. 安装所有软件包
  5. 运行'npm test tests/endpoints/auth2.test.js'

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

标签: jestjs

解决方案


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)

其余代码没问题。

在此处输入图像描述


推荐阅读