茉莉花IT块在之前'之前执行块

时间:2018-01-19 15:42:53

标签: javascript node.js jasmine protractor

在我的VSCode中的node.js项目中,我试图在运行规范之前读取配置信息。但我的规格总是在我的" beforeAll"之前执行。块。

beforeAll(() => {
    console.log('Step0………..: ');
    return new Promise(resolve => {
        console.log('Step1………..: ');

        browser.getProcessedConfig().then((config) => {            
            console.log('environment 12: ' );
            resolve(true);
        });    
    });
});

describe('*************************Executing TestSuite************************', function () {
    console.log('Step2………..: ');
    it("should support async execution of test preparation and expectations", function() {
        expect(3).toBeGreaterThan(0);
    });   
});//describe

我尝试简化代码以保留一个期望语句,但仍然是相同的。

我得到的当前输出是步骤2,步骤0,步骤1

我期待的是步骤0,步骤1,步骤2

2 个答案:

答案 0 :(得分:1)

问题是你的beforeEach函数里面有异步代码:你的Promise在开始运行你的第一个测试之前没有解决。

Jasmine has a utility to handle asynchronous behaviour

如果您将done参数传递给beforeEach调用,则可以在您的承诺解析中调用此done()函数。 以你的榜样为例:

beforeAll( (done) => {
            console.log('Step0………..: ');
            return new Promise(resolve => {
                console.log('Step1………..: ');

                browser.getProcessedConfig().then((config) => {

                    console.log('environment 12: ' );
                    resolve(true);
                    done()
                });    
            });

        });

        describe('*************************Executing TestSuite************************', function () {

            console.log('Step2………..: ');

            it("should support async execution of test preparation and expectations", function() {
                expect(3).toBeGreaterThan(0);
            });

        });//describe

答案 1 :(得分:0)

根据jasmine文档生成的输出是正确的。 IT块中的代码不会被执行,直到完成所有操作。但是如果beforeAll有任何承诺,那么我们需要传递done关键字以使执行等待在执行IT块之前完成所有异步操作。