C D*_*ter 15 flow-control promise angularjs protractor
在我的测试中,我在调用和外部库之前将数据播种到我们的后端,然后使用量角器运行一些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 () {
...
});
Run Code Online (Sandbox Code Playgroud)
因此,在it()实际完成之前,dataBuilder返回的promise未得到解决.如何将dataBuilder返回的promise添加到webDriver的流控制中?
ada*_*amK 15
量角器在量角器对象上公开WebDriverJS承诺,因此您可以使用该flow.await方法或创建新的承诺和使用flow.execute.
前者可以实现如下:
flow = protractor.promise.controlFlow()
flow.await(dataBuilder.create(testData)).then( function(id) {
testData.id = id.id;
})
Run Code Online (Sandbox Code Playgroud)
你可以在这篇博文中看到后者的一个例子.
这可以在it函数本身中完成,或者如果这对于所有测试都是通用的,请考虑将其放在onPrepare量角器配置的函数中.
a-b*_*kov 12
在我的量角器测试中,我使用以下模式在webDriver的流控件中添加了一些东西.如果从这些"各种语句"创建并返回一个promise,则promise将被正确地插入到控制流中.
browser.controlFlow().execute(function() {
// various statements
});
Run Code Online (Sandbox Code Playgroud)