gpt4 book ai didi

javascript - Protractor Jasmine 描述嵌套在 it block 中的 block

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:41 25 4
gpt4 key购买 nike

首先,下面的代码似乎可以工作。但是,我还没有看到有人这样做,所以我想知道这是否合法,以及我是否遗漏了无法预料的缺点。

上下文是我正在使用 Protractor 编写 E2E 测试,它使用 Jasmine 风格的 describe/it block 。我的目标是加载一个页面并运行一堆 it 测试 block ,而不是每次都重新加载该页面(因为它很耗时)。

我的构造是:

describe("Homepage", function () {

beforeEach(function () {
browser.get("/"); //loads the page
});

it('elements', function () {
describe('test group', function () {
it('test 1', function () {
//run stuff 1
});

it('test2', function () {
//run stuff 2
});
})
});
});

我意识到另一种方法就是这样做:

describe("Homepage", function () {

beforeEach(function () {
browser.get("/"); //goes to homepage
});

it('elements', function () {
//run stuff 1
//run stuff 2

});
});

但问题是我无法将测试分开,你最终会得到一个很大的 it block 。我想以某种方式避免每次都运行 beforeEach 的问题,但仍然能够有一个很好分离的测试 block 集。


顺便说一句,我也试过这个:

describe("Homepage", function () {

browser.get("/"); //goes to homepage

it('elements', function () {
//run stuff 1
//run stuff 2

});
});

除非你有多个这样的规范,否则这不起作用。 browser.get() 在测试运行之前一个接一个地运行。

最佳答案

将断言分成更小的 it block 绝对是个好主意。Jasmine 不需要只运行一次的全局设置函数。所以也许你可以欺骗 beforeEach block 只运行一次设置:

describe("Homepage", function() {
var pageLoaded = false;

beforeEach(function() {
if ( ! pageLoaded) {
browser.get("/");
pageLoaded = true;
}
});
});

关于javascript - Protractor Jasmine 描述嵌套在 it block 中的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575085/

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