在我的测试中,我打电话和外部图书馆,在使用量角器运行一些ui测试之前将数据种子加入我们的后端.
'use strict'
var dataBuilder = require('data_builder.js');
describe('test',function () {
var testData = {
name: 'foo',title: 'bar',...
};
beforeEach(function () {
//create test data on the backend
dataBuilder.create(testData).then(function (id) {
testData.id = id.id;
});
});
it('test something',function () {
...
});
因此,在it()实际完成之前,dataBuilder返回的承诺尚未解决.如何将dataBuilder返回的承诺添加到webDriver的流控制?
量角器暴露了量角器对象上的WebDriverJS承诺,因此您可以使用flow.await方法或创建新的承诺并使用flow.execute.
前者可以实现如下:
flow = protractor.promise.controlFlow()
flow.await(dataBuilder.create(testData)).then( function(id) {
testData.id = id.id;
})
而您可以在这个blog post中看到后者的例子.
这可以在其功能本身完成,或者如果这是所有测试的共同之处,考虑将其放置在量角器配置的onPrepare函数中.