Jestjs 为什么Jest说在没有抛出异常的情况下会有断言调用?

Jestjs 为什么Jest说在没有抛出异常的情况下会有断言调用?,jestjs,Jestjs,在将expect.hasAssertions()和expect.assertions(0)添加到我现有的Jest(js)测试中时,我发现Jest意外地失败了一些测试,因为预期的断言调用数与实际的断言调用数不匹配 预期将调用零个断言,但收到一个断言调用 我发现,即使我从头开始创建了一个项目并添加了非常简单的测试,Jest也会因为预期/实际的断言调用而失败 例如。 从Jest的网站向示例添加expect.assertions(0)失败 test('two plus two is four', ()

在将
expect.hasAssertions()
expect.assertions(0)
添加到我现有的Jest(js)测试中时,我发现Jest意外地失败了一些测试,因为预期的断言调用数与实际的断言调用数不匹配

预期将调用零个断言,但收到一个断言调用

我发现,即使我从头开始创建了一个项目并添加了非常简单的测试,Jest也会因为预期/实际的断言调用而失败

例如。 从Jest的网站向示例添加
expect.assertions(0)
失败

test('two plus two is four', () => {
        // I'd think this would pass but it fails
        expect.assertions(0);
        expect(2 + 2).toBe(4);
});
expect.hasAssertions()
添加到Jest网站的示例中

test('two plus two is four', () => {
        // I'd think this would fail but it passes
        expect.hasAssertions();
        expect(2 + 2).toBe(4);
});
为什么Jest说在没有抛出异常的情况下会有断言调用

笑话:26.4.2, 节点:13.11.0, 净现值:6.13.7


注意:这与expect不同。断言断言断言存在指定数量的断言,即
expect(…)…
调用<代码>预期。断言断言存在断言。他们并没有断言确实存在失败的断言。它们也会考虑失败的断言,但由于测试在第一次失败的断言上失败,所以计算它们是没有意义的

由于有1个断言(
expect(2+2).toBe(4)
),因此
expect.assertions(0)
失败

因此,这些将通过:

test('two plus two is four', () => {
    expect.assertions(1);
    expect(2 + 2).toBe(4);
});

test('two plus two is four', () => {
    expect.hasAssertions();
    expect(2 + 2).toBe(4);
});
这些将失败:

test('two plus two is four', () => {
    expect.assertions(0);
    expect(2 + 2).toBe(4);
});

test('two plus two is four', () => {
    expect.hasAssertions();
});

出于某种原因,我专门将其视为抛出的错误数。现在一切都有意义了。感谢您对这一愚蠢时刻的礼貌回应。