如何在它之间同步动作块

时间:2014-10-02 16:27:26

标签: javascript angularjs selenium-webdriver jasmine protractor

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

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

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

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

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

  doAnotherAction();
});

问题是这些操作按此顺序执行:

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

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

1 个答案:

答案 0 :(得分:1)

一种选择是利用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
  • doAnotherAction

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


另一种选择是从子规范之前和之后的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();
    });
});