2

这看起来如此简单,但我不明白为什么这个简单的代码不起作用。

我在 Angular E2E 测试中添加了一个模拟模块来模拟我的 API 后端。我正在使用量角器 1.6.0。我需要将附加参数传递给模拟模块,根据 Protractor 文档,只需将它们作为附加参数发送即可。但是,我的函数声称它没有参数......

var mock = function() {
  // This is undefined and arguments.length is 0....why???
  var env = arguments[0];
  var mocks = angular.module('mocks.login', ['MyApp', 'ngMockE2E']);
  mocks.run(function($httpBackend) {
    $httpBackend.whenGET(env.apiBase + '/companies').respond([]);
  });
};

browser.addMockModule('mocks.login', mock, {apiBase: ""});

如果重要的话,我会在我的 Protractor 配置文件中的 onPrepare 中执行此操作,因为我正在尝试模拟用户登录期间使用的 API 调用。任何帮助将非常感激。

4

2 回答 2

0

显然,args 应该作为数组传递。这就是它对我的工作方式:

        var test =  {
            val1: 'val1',
            val2: 'val2'
        };
       browser.addMockModule('mockModule', function( args) {
            angular.module('mockModule', [])
                .value('TEST', args[0]);

        }, [test]);
于 2016-07-25T15:37:53.117 回答
-1

这对我有用:

var mock = function(args) {
    // args.apiBase should be available here
    var env = args;
    var mocks = angular.module('mocks.login', ['MyApp', 'ngMockE2E']);
    mocks.run(function($httpBackend) {
        $httpBackend.whenGET(env.apiBase + '/companies').respond([]);
    });
};

browser.addMockModule('mocks.login', mock, {apiBase: ""});
于 2015-11-25T16:36:08.320 回答