Javascript 描述外的beforeach是否总是在描述内的beforeach开始之前完成?

Javascript 描述外的beforeach是否总是在描述内的beforeach开始之前完成?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,外部在每次开始之前是否保证内部在每次开始之前完成 let qux; beforeEach(() => { // // other synchronous code here // qux = null; }); describe('Description', () => { beforeEach(() => { qux = 0; // // other synchronous code here // });

外部<代码>在每次<代码>开始之前是否保证内部<代码>在每次<代码>开始之前完成

let qux;

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

describe('Description', () => {

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

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

换句话说,上述测试是否保证通过?

PR中有一些信息添加了对每次调用前后多次调用的支持()-因此,只要您的操作是同步的,您就应该没有问题-您可以在上述PR中的测试用例中验证这一点。

是,外部
beforeach
保证在内部
beforeach
启动之前完成:

Jest
通过从定义规范的位置开始查找规范的所有
before
函数,然后向上遍历父类并返回反向列表

之前的
函数、测试和
之后的
函数放入数组中

每个函数都由它包装,它返回一个承诺,直到函数完成、测试取消、出现错误或达到超时时才会解析,并且结果承诺由
reduce
链接在一起


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

第一条注释是这样说的:“outer and previous declared beforeach functions run beforeach​ 这意味着在每个
之前,
的开始时间是有保证的,但仍然不能保证外部的在内部的开始之前完成。如果我理解正确,节点是单线程的,所以假设我们没有运行异步代码,似乎可以安全地假设先启动的函数必须在第二个函数开始之前结束。这看起来是对的吗?是的,所有同步函数(一直向下)都是在一个循环中执行的(直到给定的最大调用堆栈大小,我认为是984),你链接到qunitjs文档。玩笑是不是以qunitjs为基础?