量角器addMockModule其他参数不起作用?

时间:2015-01-11 03:06:31

标签: angularjs testing protractor end-to-end ngmocke2e

这看起来如此简单,但我无法弄清楚为什么这个简单的代码不起作用。

我在Angular E2E测试中添加了一个模拟模块来模拟我的API后端。我正在使用Protractor 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: ""});

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

2 个答案:

答案 0 :(得分:0)

出乎意料的是,args应该作为数组传递。 这就是它对我有用的方式:

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

        }, [test]);

答案 1 :(得分:-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: ""});