一尘不染

您如何使用量角器向流量控制队列中添加承诺?

angularjs

在我的测试中,我调用了外部库并在使用量角器运行一些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的流控制中?


阅读 251

收藏
2020-07-04

共1个答案

一尘不染

量角器在量角器对象上公开WebDriverJS承诺,因此您可以使用flow.await方法或创建新的承诺和使用flow.execute

前者可以达到以下目的:

flow = protractor.promise.controlFlow()

flow.await(dataBuilder.create(testData)).then( function(id) {
    testData.id = id.id;
})

您可以在此博客文章中看到后者的示例。

这可以在it函数本身中完成,或者如果所有测试都通用,则考虑将其放在onPrepare量角器配置的函数中。

2020-07-04