量角器`addMockModule()`参数不能在Firefox中正确处理结构化数据

时间:2015-01-08 19:26:26

标签: javascript angularjs firefox protractor

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

我一直渴望干预我的量角器测试,这是我需要的解决方案。这个解决方案在ChromeDriver上运行得很好,但是对于FirefoxDriver来说,这个问题很奇怪。这是我的代码(在beforeEach()块中:

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

testAggregatestestMerchant之前已定义。)

这在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()JSON.parse()的输入。它似乎有效,但很难看 - 框架应该已经在处理它了。

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

0 个答案:

没有答案