Protractor Jasmine描述了嵌套在it块中的块
Protractor Jasmine describe blocks nested within an it block
首先,下面的代码似乎可以工作。然而,我还没有看到任何人这样做,所以我想知道这是否合法,我是否错过了不可预见的不利因素。
上下文是我正在用Protractor写一个E2E测试,它使用Jasmine风格的describe/it块。我的目标是加载一个页面并运行一堆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
块。我想以某种方式避免每次运行beforeEach的问题,但仍然能够有一个很好地分离的测试块集。
顺便说一句,我也试过这个:
describe("Homepage", function () {
browser.get("/"); //goes to homepage
it('elements', function () {
//run stuff 1
//run stuff 2
});
});
但当你有多个这样的规格时,这就不起作用了。在测试运行之前,browser.get()都会一个接一个地运行。
将断言分解成更小的it块无疑是个好主意。Jasmine似乎没有只运行一次的全局设置功能。因此,也许你可以欺骗beforeEach块只运行一次设置:
describe("Homepage", function() {
var pageLoaded = false;
beforeEach(function() {
if ( ! pageLoaded) {
browser.get("/");
pageLoaded = true;
}
});
});
Jasmine2有beforeAll()和afterAll(),它们对整个套件运行一次。
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- 猫鼬在特定记录中查找嵌套记录
- 访问嵌套JSON对象的键,其中键是动态的
- D3嵌套组作为x轴
- Ionic和angularjs嵌套步骤应用程序
- 从多维嵌套json数组创建下拉列表
- 默认情况下折叠和展开嵌套列表
- 嵌套对象结构
- 显示嵌套窗体
- Protractor Jasmine描述了嵌套在it块中的块
- 带有嵌套if/else语句的循环的javascript没有执行,不确定是什么'It’出了问题