我正在使用量角器在我的角度应用程序上运行e2e测试。

我希望能够在describeit块之间同步动作,例如:

describe('My spec', function () {
  doMyAction();

  describe('My sub spec 1', function () {
    ...
  });

  describe('My sub spec 2', function () {
    ...
  });

  doAnotherAction();
});


问题是这些操作是按以下顺序执行的:


doMyAction
做另一个动作
describe1
describe2


有没有办法强制在doAnotherAction之前执行describe块?
我检查了控制流功能:https://code.google.com/p/selenium/wiki/WebDriverJs#Control_Flows

我想知道的是,describe块是否返回可以与之同步的承诺?

最佳答案

一种选择是利用jasmine-beforeAll插件,该插件提供beforeAll()afterAll()钩子,它们基本上是规范级的设置和拆卸功能:

describe('My spec', function () {
  beforeAll(function() { doMyAction(); });
  afterAll(function() { doAnotherAction(); });

  describe('My sub spec 1', function () {
    ...
  });

  describe('My sub spec 2', function () {
    ...
  });
});


在这种情况下,执行顺序为:


doMyAction
describe1
describe2
做另一个动作


仅供参考,beforeAll()afterAll()当前为a part of jasmine development version,相关功能要求:


Support for beforeAll and afterAll




另一个选择是在子规范之前和之后从doMyAction块调用doAnotherActionit

describe('My spec', function () {
    it('beforeAll', function () {
        doMyAction();
    });

    describe('My sub spec 1', function () {
        ...
    });

    describe('My sub spec 2', function () {
        ...
    });

    it('afterAll', function () {
        doAnotherAction();
    });
});

09-18 08:29