2016-01-22 47 views
1

執行我有以下規格:爲什麼加入模擬模塊沒有嵌套beforeEach

describe("parent describe", function(){ 

    beforeEach(function(){ 
    loginPage.go(); 
    }); 

    describe("nested describe", function(){ 

    beforeEach(function(){ 
     browser.addMockModule("httpMocker", function() { 
     console.log("going there ?"); //not executed in the browser, WHY ? 
     angular.module("httpMocker", ["ngMockE2E"]).run(function($httpBackend) { 
      $httpBackend.whenGET(/security/).respond(function() { return [401]; }); 

     $httpBackend.whenGET(/.*/).passThrough(); 
     }); 
    }); 

    it("a spec", function(){ 
     //.... 
    }) 
    }); 
}); 

正如評論提到它,給addMockModule功能永遠不會在瀏覽器中執行。

現在,如果我將addMockModule呼叫移動到家長describebeforeEach中,則模擬模塊將被添加並執行。

爲什麼?

回答

3

該問題與beforeEach()地點無關。該addMockModule有任何browser.get()調用之前調用:

添加一個模塊,每當Protractor.get被稱爲前角加載。模塊將在 頁面上的現有模塊之後進行註冊,因此在此註冊的任何模塊將覆蓋已存在的具有相同名稱的 模塊。

在你的情況,我很確定loginPage.go();使用browser.get()