在我的测试中,我调用了外部库并在使用量角器运行一些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 () { ... });
因此,dataBuilder返回的promise在it()实际完成之前不会得到解决。如何将dataBuilder返回的Promise添加到webDriver的流控制中?
量角器在量角器对象上公开WebDriverJS承诺,因此您可以使用flow.await方法或创建新的承诺和使用flow.execute。
flow.await
flow.execute
前者可以达到以下目的:
flow = protractor.promise.controlFlow() flow.await(dataBuilder.create(testData)).then( function(id) { testData.id = id.id; })
您可以在此博客文章中看到后者的示例。
这可以在it函数本身中完成,或者如果所有测试都通用,则考虑将其放在onPrepare量角器配置的函数中。
it
onPrepare