2016-01-22 7 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 звонок в beforeEach родителя describe, модуль с наддувом будет добавлен и выполнен.

Зачем?

ответ

3

Проблема не связана с местом beforeEach(). addMockModule должен быть вызван до любого browser.get() вызова:

Добавить модуль для загрузки, прежде чем Угловая когда Protractor.get называется. Модули будут зарегистрированы после существующих модулей уже на странице , поэтому любой зарегистрированный здесь модуль будет переопределять существующие модули с тем же именем.

В вашем случае, я уверен, что loginPage.go(); использует browser.get().