Транспортир 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: ""});
Другие вопросы по тегам