带有参数的量角器“addMockModule()”在 Firefox 中无法正确处理结构化数据

2023-12-21

我最近阅读了有关这些量角器问题的解决方案:

  • 无法轻松地将上下文传递给addMockModule #695 https://github.com/angular/protractor/issues/695
  • feat(addMockModule): 添加第三个参数来传递上下文 #787 https://github.com/angular/protractor/pull/787

我一直渴望干燥我的量角器测试,这就是我需要的解决方案。这个解决方案在 ChromeDriver 上运行得很好,但在 FirefoxDriver 上却出奇地出问题了。这是我的代码(在beforeEach() block:

  var httpBackendMock = function() {
      angular.module('httpBackendMock', ['ngMockE2E'])
        .value('mockData', arguments[0])
        .run(function ($httpBackend, mockData) {
          $httpBackend.whenGET(/.*aggregates/)
            .respond(200, mockData.testAggregates);
          $httpBackend.whenGET(/.*merchants\/123456/)
            .respond(200, mockData.testMerchant);
        });
  };
  browser.addMockModule('httpBackendMock', httpBackendMock, {
    testAggregates: testAggregates,
    testMerchant: testMerchant
  });

(testAggregates and testMerchant之前已定义。)

这在 Chrome 中完美运行,但在 Firefox 中,当whenGET期望被激发,但他们没有返回任何数据。我是否使用它都会失败mockData对象或直接使用arguments[0].

但事情变得更奇怪了。如果我尝试检查mockData我稍后在上面创建的模块值browser.executeScript()调用,数据就在那里,并且console.log在 Chrome 和 Firefox 中以相同的方式呈现它。

  browser.get('index.html#/experiments');
  browser.executeScript(function() {
    return angular.injector(["httpBackendMock"]).get('mockData');
  }).then(function(data) {
    console.log("DATA", data);
  });

当测试运行时,数据将按预期显示。

我发现的唯一解决方法是JSON.stringify()输入到addMockModule() and JSON.parse()它在里面。它似乎有效,但很丑陋 - 框架应该已经处理好它了。

所以我认为这是一个错误,但我真的不确定which组件这是一个错误in.


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有参数的量角器“addMockModule()”在 Firefox 中无法正确处理结构化数据 的相关文章

随机推荐