Jest 只显示一个测试套件,即使测试文件中存在对 describe() 的多个顶级调用

Ben*_*ett 6 javascript testing node.js jestjs

我正在用 jest 测试我的库,并且在第一层有一个包含多个描述调用的文件,但是当我运行“npm test”时,它报告:“测试套件:1 个通过,总共 1 个”“测试:26 个通过,共 26 个"

为什么不报告几个测试套件?

据我所知,jest 的 describe 函数应该创建自己的测试套件,但不知何故它们都被组合在一起......

来自 jest API,“describe(name, fn) 创建一个块,将几个相关测试组合到一个测试套件中”

uri*_*rig 6

似乎 Jest 并没有真正将每个顶级调用都算作describe()一个单独的测试套件。在 Jest 的 GitHub 存储库中甚至有一个未解决的问题,将这种行为报告为一个错误。

确实,正如您所描述的以及repl.it 上的这个最小示例所展示的,对 的两个顶级调用describe()

const add = require('./add');
describe('add', () => {
  it('should add two numbers', () => {
    expect(add(1, 2)).toBe(3);
  });
});
describe('add again', () => {
  it('should add two numbers', () => {
    expect(add(1, 0)).toBe(1);
  });
});
Run Code Online (Sandbox Code Playgroud)

被视为单个测试套件:

Jest v22.1.2 node v7.4.0 linux/amd64

 PASS  ./add-test.js
  add
    ? should add two numbers (5ms)
  add again
    ? should add two numbers

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        1.025s
Run Code Online (Sandbox Code Playgroud)

当前的 Jest 文档在说明以下内容时似乎具有误导性:

describe(name, fn) 创建一个块,将几个相关的测试组合在一个“测试套件”中