1

我有以下规格:

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 的函数永远不会在浏览器中执行。

现在,如果我在 parent中移动addMockModule调用,模拟模块将被添加并执行。beforeEachdescribe

为什么 ?

4

1 回答 1

3

问题与地点无关beforeEach()addMockModule必须在任何调用之前调用browser.get()

每当调用 Protractor.get 时,在 Angular 之前添加一个要加载的模块。模块将在页面上已经存在的模块之后注册,因此此处注册的任何模块都将覆盖具有相同名称的预先存在的模块。

在你的情况下,我很确定loginPage.go();使用browser.get().

于 2016-01-22T16:37:32.627 回答