Javascript 量角器Jasmine描述嵌套在it块中的块
首先,下面的代码似乎有效。然而,我还没有看到任何人这样做,所以我想知道这是否合法,我是否错过了不可预见的不利因素 上下文是我正在用量角器编写一个E2E测试,它使用Jasmine风格的descripe/it块。我的目标是加载一个页面并运行一系列Javascript 量角器Jasmine描述嵌套在it块中的块,javascript,angularjs,testing,jasmine,protractor,Javascript,Angularjs,Testing,Jasmine,Protractor,首先,下面的代码似乎有效。然而,我还没有看到任何人这样做,所以我想知道这是否合法,我是否错过了不可预见的不利因素 上下文是我正在用量角器编写一个E2E测试,它使用Jasmine风格的descripe/it块。我的目标是加载一个页面并运行一系列it测试块,而无需每次重新加载该页面(因为它很耗时) 我的构想是: describe("Homepage", function () { beforeEach(function () { browser.get("/"); //lo
it
测试块,而无需每次重新加载该页面(因为它很耗时)
我的构想是:
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
块。我想以某种方式避免每次之前都运行的问题,但仍然能够有一组很好地分离的测试块
顺便说一下,我也试过:
describe("Homepage", function () {
browser.get("/"); //goes to homepage
it('elements', function () {
//run stuff 1
//run stuff 2
});
});
但是,当您有多个这样的规格时,这不起作用。在测试运行之前,browser.get()都会一个接一个地运行。将断言分解为更小的it块绝对是个好主意。 Jasmine似乎没有只运行一次的全局设置功能。 因此,您可以欺骗beforeach块,使其只运行一次安装程序:
describe("Homepage", function() {
var pageLoaded = false;
beforeEach(function() {
if ( ! pageLoaded) {
browser.get("/");
pageLoaded = true;
}
});
});
Jasmine2有beforeAll()和afterAll(),在整个套件中运行一次。这是个好主意。让我等一两天再接受,看看是否还有其他人有什么想法。我还想为
browser.get()
这个特定场景添加内容。您还可以使用browser.getCurrentUrl()
检查当前页面,然后再“获取”它。