如何在it块之间同步操作

How to synchronize actions between it blocks

本文关键字:之间 同步操作 it      更新时间:2023-09-26

我正在使用量角器在我的角度应用程序上运行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. 描述1
  4. 描述2

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

我想知道的是,描述块是否返回了我可以同步的承诺?

一种选择是使用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
  • 描述1
  • 描述2
  • doAnotherAction

仅供参考,beforeAll()afterAll()目前是茉莉花开发版本的一部分,相关功能请求:

  • 支持beforeAll和afterAll
<小时>

另一种选择是在子规范之前和之后从it块调用doMyActiondoAnotherAction

describe('My spec', function () {
    it('beforeAll', function () {
        doMyAction();
    });
    describe('My sub spec 1', function () {
        ...
    });
    describe('My sub spec 2', function () {
        ...
    });
    it('afterAll', function () {
        doAnotherAction();
    });
});