gpt4 book ai didi

javascript - Jasmine 中 beforeAll() 的目的是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:28:23 26 4
gpt4 key购买 nike

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

顺便说一句,这里是官方定义:beforeAll 函数在任何 beforeEach 函数或任何规范之前,对包含它的 describe block 执行一次且仅执行一次。

最佳答案

beforeAll block 和普通代码在describe 函数范围内有一些实质性的区别。

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

before* block 中的错误并不严重,不会阻止填充规范列表和运行规范。 describe block 中的错误将导致规范列表为空。

before*it block 有 this as the context of current spec可以用作在 block 之间共享数据的推荐方式。它通常比来自父作用域的普通变量更可取,因为以这种方式没有交叉污染测试的风险。 describe 函数没有这个上下文。但是,这种方法与 ES6 箭头函数不兼容。

可能有一些 Jasmine 助手应该与 before*it block 一起工作,例如在 Angular Testing 中:

beforeAll(fakeAsync(() => {
asyncInitializationThatDoesntNeedDoneCallback();
}));

如果它是一个应该为整个 block 定义的常量,那么肯定可以不用beforeAll来定义它:

describe('...', () => {
const foo = 'test'; // not let
...
});

关于javascript - Jasmine 中 beforeAll() 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com