Транспортир `addMockModule()` с аргументами, неправильно обрабатывающими структурированные данные в Firefox
Недавно я прочитал о решении этих проблем с транспортирами:
- Невозможно легко передать контекст
addMockModule
# 695 - feat (addMockModule): добавить третий параметр для передачи контекста #787
Я очень хотел высушить свои испытания транспортира, и это было решение, в котором я нуждался. Это решение прекрасно работает с 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()
это внутри. Вроде бы работает, но некрасиво - об этом уже должны заботиться рамки.
Так что я думаю, что это ошибка, но я действительно не уверен, в каком компоненте это ошибка.