在我的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
答案 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块之前完成所有异步操作。