【问题标题】:Protractor addMockModule additional arguments not working?量角器 addMockModule 附加参数不起作用?
【发布时间】:2015-01-11 03:06:31
【问题描述】:

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

我正在添加一个模拟模块来模拟我的 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 调用。任何帮助将不胜感激。

【问题讨论】:

  • 您是否尝试将代码从 Protractor 配置中的 onPrepare 移动到测试套件中的 beforeEach

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


【解决方案1】:

显然,args 应该作为数组传递。 这对我来说是这样的:

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

        }, [test]);

【讨论】:

    【解决方案2】:

    这对我有用:

    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: ""});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多