在Jasmine中,beforeAll()的目的是什么?

Dav*_*e M 4 javascript jasmine ecmascript-6

为什么我们不只是更换beforeAll(function(){ let foo = 'test' })let foo = 'test'beforeAll如果第二种方式没问题,目的是什么?

顺便说一下,这是官方定义:在任何beforeEach函数或任何规范之前,beforeAll函数只对包含它的describe块执行一次.

Est*_*ask 6

函数beforeAll范围中的块和普通代码之间存在一些实质性差异describe.

beforeAll设置应该与afterAll拆卸相结合.

before*块中的错误并不重要,不会阻止规范列表的填充和规范的运行.describe块中的错误将导致空的规范列表.

before*it块具有this当前规范的上下文,可以用作在块之间共享数据的推荐方式.它通常比父范围的普通变量更可取,因为这样就没有交叉污染测试的风险.describe函数没有这个上下文.但是,此方法与ES6箭头功能不兼容.

可能有Jasmine助手应该与Angular测试一起使用before*it阻塞,例如在Angular测试中:

beforeAll(fakeAsync(() => {
  asyncInitializationThatDoesntNeedDoneCallback();
}));
Run Code Online (Sandbox Code Playgroud)

如果它是一个应该为整个块定义的常量,那么它肯定可以在没有beforeAll:

describe('...', () => {
  const foo = 'test'; // not let
  ...
});
Run Code Online (Sandbox Code Playgroud)