无法在浏览器上下文中访问范围之外的变量

时间:2016-05-11 13:24:00

标签: javascript angularjs scope protractor angularjs-e2e

使用protractor进行角度e2e测试。我对addMockModule有范围问题。规范说明:

  

加载模块的JavaScript。请注意,这将在执行中执行   浏览器上下文,因此无法从其外部访问变量   范围。

https://angular.github.io/protractor/#/api?view=Protractor.prototype.addMockModule

browser.addMockModule('modName', function() {
  angular.module('modName', []).value('foo', 'bar');
});

问题:我正在尝试将另一个函数Mockr传递给我的模拟模块。我想设置并获得模拟ID。

steps.js

var mockData = require('../../mocks/data.js');
var Mockr = require('../../mocks/mockr.js');

var steps = function() {
  this.Before(function(scenario, done) {
    browser.addMockModule('httpBackEndMock', mockData.module, Mockr );

    done();
  });

};

module.exports = steps;

data.js

exports.module = function ( Mockr ) {
  angular.module('httpBackEndMock', ['ngMockE2E'])
  .run(function($httpBackend) {
     // cannot access Mockr here... 
     // since this is in browser context scope,
     // how can I access Mockr???
     // like: Mockr.getMockId();
  });
};

mockr.js

module.exports = {
    id: 5,
    setMockId: function(id) {
        module.exports.id = id;
    },
    getMockId: function() {
        return module.exports.id;
    }
};

0 个答案:

没有答案