2014-12-22 4 views
8

Мы используем istanbul для покрытия кода в наших тестах кармы. Это отлично подходит для отслеживания охвата кода наших модульных тестов в JavaScript. Однако это не отслеживает покрытие кода в наших HTML-шаблонах.Кодовое покрытие для шаблонов AngularJS html

У нас очень мало логики в наших шаблонах, но по-прежнему существует сложность, которую мы хотим отслеживать и обеспечить надлежащее покрытие в наших тестах. Каковы наилучшие методы для обеспечения правильного охвата всех ваших HTML-шаблонов. В нашем конкретном случае мы используем ng-if и ng-switch. Мы хотели бы обеспечить, чтобы все филиалы были надлежащим образом охвачены.

ответ

0

К сожалению, istanbul и карма разработаны для тестирования JavaScript, а не шаблонов HTML. Поскольку ваши инструкции ng-if и ng-switch, скорее всего, будут влиять на то, что отображается/не отображается на странице, вы можете захотеть использовать сквозной набор Angular, Protractor. Насколько мне известно, нет никакого инструмента покрытия для сквозного тестирования.

+0

Спасибо, мы используем транспортир для определенных видов испытаний. Они ориентированы на интеграционное тестирование внешнего интерфейса + back-end. Эти тесты используются для тестирования пользовательских сценариев и не являются модульными. Покрытие кода не относится к этим тестам (охват сценариев). У нас есть модульные тесты, которые проверяют взаимодействие с DOM (где задний конец вычеркнут). И мы отслеживаем покрытие нашего JS-кода, но у нас нет способа отслеживать охват нашего шаблона. –

+0

Я понимаю этот вопрос. В настоящее время я не знаю никаких решений. Это был бы интересный open-source fork istanbul для тестирования html. – Adam

+0

Да, это должно было бы глубоко углубиться в систему шаблонов углов, поскольку для этого потребуется запустить покрытие по скомпилированному шаблону, а затем каким-то образом отобразить покрытие обратно в исходный файл. Не просто. –

1

Хотя вы можете получать отчеты о покрытии из Стамбула через сторонние плагины (https://www.npmjs.com/package/protractor-istanbul-plugin), проблема заключается в том, что в отличие от React или других библиотек, которые конвертируют шаблоны (JSX) в манипуляции с DOM-документами, Angular не раскрывает сгенерированную DOM в способ, который возможен для инструментария, необходимого для создания отчетов о покрытии.

Смежные вопросы