这看起来如此简单,但我无法弄清楚为什么这个简单的代码不起作用。
我在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调用。任何帮助将不胜感激。
答案 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: ""});