【问题标题】:How to synchronize actions between it blocks如何在 it 块之间同步操作
【发布时间】:2014-10-03 00:44:02
【问题描述】:

我正在使用量角器在我的 Angular 应用程序上运行 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

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

【问题讨论】:

    标签: javascript angularjs selenium-webdriver jasmine protractor


    【解决方案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
    • 描述1
    • 描述2
    • doAnotherAction

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


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

    【讨论】:

    • 量角器项目不包括jasmine的主要开发版本,而是1.2版本。我会接受你的第二个选择,即使我认为它是一种黑客行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多