gpt4 book ai didi

javascript - jasmine之前都受sibling describe的影响

转载 作者:行者123 更新时间:2023-11-30 16:22:49 27 4
gpt4 key购买 nike

我的印象是 beforeAll - 函数会根据它在里面的描述运行一次。然而,兄弟描述似乎会影响 beforeAll

可以找到以下测试here

describe("outer Describe", function(){
var testArray;
beforeEach(function(){
testArray = [];
});
describe("First Describe", function(){
beforeEach(function(){
testArray.push({name: "foo"});
});

it("has an item", function(){
expect(testArray.length).toBe(1);//passing
});
});

describe("Second describe", function(){
var arrIsEmptyInBeforeAll;
var arrIsEmptyInBeforeEach;
beforeAll(function(){
arrIsEmptyInBeforeAll = testArray.length === 0;
console.log("testArray should be empty:");
console.log(testArray);//logs array with one item
});

beforeEach(function(){
arrIsEmptyInBeforeEach = testArray.length === 0;
});

it("the arr was empty in before all", function(){
expect(arrIsEmptyInBeforeAll).toBeTruthy(); //This is failing
});

it("the arr was empty in beforeEach", function(){
expect(arrIsEmptyInBeforeEach).toBeTruthy();//Passing
})
})
});

我希望“第二个 Describe”中的 beforeAll 会有一个空的 testArray,因为“外部 Describe”有一个 beforeEach > 将其初始化为一个空数组。但是,在“第二个描述”的beforeAll中,testArray有一个项目添加在“第一个描述”的beforeEach中。

这有意义吗?如果是这样,有人可以解释 beforeAll 应该如何工作。

最佳答案

注意:您的代码中有错别字 ;) .. 但这不是问题所在。

expect(arrIsEmptyInBeforeAll).toBeTruthy();

简答

beforeAll 始终在 Jasmine 中的 beforeEach 之前调用,即使存在外部 beforeEach 语句也是如此。

您的测试按以下方式执行:

(外部测试的迭代)

  1. 外层 beforeEach 被调用 -> 数组为空
  2. "First Describe"beforeEach 被调用 -> array 变为 length = 1

(内部测试的迭代)

  1. “第二个描述”beforeAll 被调用 -> arrIsEmptyInBeforeAll 为 false,因为数组仍设置有一项
  2. 外层 beforeEach 被调用 -> 数组为空
  3. “第二个描述” beforeEach 被调用 -> arrIsEmptyInBeforeEach 为真,因为数组已被清除
  4. arrIsEmptyInBeforeAll 在您的测试中为假

关于javascript - jasmine之前都受sibling describe的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507233/

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