Javascript 规格说明和规格说明之间的量角器执行堆栈

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

我对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 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()块不是承诺?我还是很困惑。