Angularjs Unit Test не работает для document.getElementById ('# elementId') в контроллере

Код контроллера:

var element = document.getElementById('#elementId');

element.style.display = "block";

Когда выполняется модульный тест (который выполняет приведенный выше код в контроллере), он завершается ошибкой со следующей ошибкой:

TypeError: Cannot read property 'style' of null at ChildScope.$scope.openTab

Как получить документ / DOM внутри модульного теста?

Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
0
1 906
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать создать фиктивный элемент документа с помощью приведенного ниже кода:

var mockedDocElement = document.createElement('div');
document.getElementById = jasmine.createSpy('*<<yourElementId>>*').andReturn(mockedDocElement );

Таким образом, при каждом вызове document.getElementById будет возвращаться фиктивный элемент, и, таким образом, вы можете продолжить выполнение тестируемого метода без каких-либо подобных исключений.

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