Javascript 规格说明和规格说明之间的量角器执行堆栈
我对JS如何在量角器中执行规范文件感到困惑。在我的conf.js中,我有两个规范['spec1','spec2'] 规格1:Javascript 规格说明和规格说明之间的量角器执行堆栈,javascript,protractor,Javascript,Protractor,我对JS如何在量角器中执行规范文件感到困惑。在我的conf.js中,我有两个规范['spec1','spec2'] 规格1: "use strict"; console.log('1'); describe('A', function(){ console.log('2'); it('B', function(){ console.log('3'); }); }); 规格2: "use st
"use strict";
console.log('1');
describe('A', function(){
console.log('2');
it('B', function(){
console.log('3');
});
});
规格2:
"use strict";
console.log('4');
describe('C', function(){
console.log('5');
it('D', function(){
console.log('6');
});
});
运行测试时,输出为:
1
2
4
5
Started
Spec started
3
.
A
✓ B
6
. C
✓ D
为什么它的顺序不是123456?因为
it
块将被添加到控制流中,其他块将在onPrepare
完成之后和规范开始之前执行。这两个文件已加载并准备完成,因此它按预期的规格顺序执行这四个数字,1、2、4、5
,然后启动规格,并按规格测试的顺序打印下两个。禁用控制流是否重要?因为我确实在conf.jsYes中指定了SELENIUM\u PROMISE\u MANAGER:false,所以这很重要。量角器(或者更具体地说,webdriver)使用控制流来维护一个等待承诺的队列。它允许代码异步执行,而无需显式异步编写。我不太清楚为什么要禁用SELENIUM\u PROMISE\u管理器,他们的文档表明这种方法在很长一段时间内不会被弃用(至少还有两个主要节点版本),但是如果禁用CF,如何将it()块添加到CF中?以上代码是禁用CF的结果。我还以为只有承诺被推送到CF,而it()块不是承诺?我仍然感到困惑。因为it
块将被添加到控制流中,其他块将在onPrepare
完成之后和规范开始之前执行。这两个文件已加载并准备完成,因此它按预期的规格顺序执行这四个数字,1、2、4、5
,然后启动规格,并按规格测试的顺序打印下两个。禁用控制流是否重要?因为我确实在conf.jsYes中指定了SELENIUM\u PROMISE\u MANAGER:false,所以这很重要。量角器(或者更具体地说,webdriver)使用控制流来维护一个等待承诺的队列。它允许代码异步执行,而无需显式异步编写。我不太清楚为什么要禁用SELENIUM\u PROMISE\u管理器,他们的文档表明这种方法在很长一段时间内不会被弃用(至少还有两个主要节点版本),但是如果禁用CF,如何将it()块添加到CF中?以上代码是禁用CF的结果。我还以为只有承诺被推送到CF,而it()块不是承诺?我还是很困惑。