首页 > 解决方案 > 描述之外的 beforeEach 是否总是在描述内部的 beforeEach 开始之前完成?

问题描述

是外beforeEach保证在内部beforeEach开始之前完成?

let qux;

beforeEach(() => {
  //
  // other synchronous code here
  //
  qux = null;
});

describe('Description', () => {

  beforeEach(() => {
    qux = 0;
    //
    // other synchronous code here
    //
  });

  it('Predicate', () => {
    expect(qux).toEqual(0);
  });
});

也就是说,上面的测试能保证通过吗?

标签: javascriptnode.jsjestjs

解决方案


是的,外部beforeEach保证在内部beforeEach开始之前完成:

Jestbefore通过从定义规范的位置开始并在此处向上遍历父项并在此处返回反向列表查找规范的所有函数。

before函数、测试和函数在这里after被放入一个数组中。

每个函数都由mapper它包装,返回一个 Promise,直到函数完成、测试被取消、发生错误或达到超时后才会解析,并且生成的 Promise由reduce here链接在一起。

因此,除非出现错误、超时或测试被取消,否则beforeEach函数将按顺序运行至完成,并且上述测试将通过。


推荐阅读