Транспортир addMockModule дополнительных аргументов не работает?
Это кажется очень простым, но я не могу понять, почему этот простой код не работает.
Я добавляю фиктивный модуль для макета моего API-интерфейса в моих тестах Angular E2E. Я использую 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: ""});
Если это имеет значение, я делаю это в своем конфигурационном файле Protractor в onPrepare, так как я пытаюсь смоделировать вызовы API, используемые при входе пользователя в систему. Любая помощь приветствуется.
2 ответа
По-видимому, аргументы должны быть переданы как массив. Вот как это работает для меня:
var test = {
val1: 'val1',
val2: 'val2'
};
browser.addMockModule('mockModule', function( args) {
angular.module('mockModule', [])
.value('TEST', args[0]);
}, [test]);
Это работает для меня:
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: ""});