在我的测试中,我打电话和外部图书馆,在使用量角器运行一些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函数中.