2014-10-02 34 views
1

我正在使用量角器在我的角度應用程序上運行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. e2

有沒有辦法強制在doAnotherAction之前執行describe塊? 我檢查了控制流程特徵:https://code.google.com/p/selenium/wiki/WebDriverJs#Control_Flows

我想知道的是做描述塊返回一個承諾,我可以同步?

回答

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,相關的功能要求:


另一種辦法是打電話從doMyActiondoAnotherActionit塊之前和之後的規格:

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

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

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

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

量角器項目不包括茉莉花的主要開發版本,但版本1.2。即使我認爲它是黑客,我也會接受你的第二個選項。 – Erem 2014-10-08 08:49:07