Транспортир `addMockModule()` с аргументами, неправильно обрабатывающими структурированные данные в Firefox

Недавно я прочитал о решении этих проблем с транспортирами:

Я очень хотел высушить свои испытания транспортира, и это было решение, в котором я нуждался. Это решение прекрасно работает с 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
  });

(testAggregatesа также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()а такжеJSON.parse()это внутри. Вроде бы работает, но некрасиво - об этом уже должны заботиться рамки.

Так что я думаю, что это ошибка, но я действительно не уверен, в каком компоненте это ошибка.

0 ответов

Другие вопросы по тегам