Angular 5 — Сквозное тестирование с ngModel

На прошлой неделе мы пытались добавить e2e-тестирование в наш проект, но кажется (после большого исследования в Интернете) нет библиотеки, которая могла бы работать с Angular ngModel (версия 2+).

что мы можем сделать ? есть ли что-нибудь, кроме транспортира, который не поддерживает Angular 2 ngModel и привязку?

html пример:

Мне нужно найти следующую модель "data.user.name".

Спасибо.


person Eliad Ayehu    schedule 14.02.2018    source источник


Ответы (1)


Нет проблем с использованием proactor для ngModel. Пожалуйста, загляните в этот репозиторий.

Я уже использую его. Вам нужно только взять каталог e2e и посмотреть в package.json, каковы зависимости dev.


Изменить для вашего редактирования: доступ к внутреннему модальному «data.user.name»

Вы не должны использовать e2e тесты для этого, это бессмысленно. Вам необходимо регулярное модульное тестирование для каждого компонента. Пожалуйста, попробуйте воспроизвести то, что находится в каталоге *.spec.ts в каталоге src. См. также test-config в упомянутом выше репозитории.

Официальный документ по модульному тестированию находится здесь

В заключение:

  • Доступ к компоненту и его значениям, например data.user.name, находится на стороне тестового модуля, Angular предоставляет для этого тяжелый документ (но хорошо сделанный).
  • Доступ к DOM осуществляется на стороне e2e с помощью обычного API JavaScript, например:
    expect(userNameField.getAttribute('value')).toContain('myusername');
person David F.    schedule 14.02.2018
comment
не могли бы вы сказать мне, какой синтаксис для этого? я отредактировал вопрос и добавил пример html для поиска - person Eliad Ayehu; 14.02.2018
comment
похоже в вашем ответе ничего не изменилось - person Eliad Ayehu; 14.02.2018
comment
Итак, вы говорите, что мы не можем использовать e2e-тестирование с ngModel, потому что это Angular и не имеет ничего общего с DOM? - person Eliad Ayehu; 14.02.2018
comment
Сквозное тестирование означает именно это, а не просто тестирование состояния DOM. Существуют вполне допустимые тестовые примеры, в которых вы хотели бы проверить содержимое/состояние поля, идентифицированного моделью Angular или -binding. Мы также проверили это и обнаружили, что этого не хватает. Транспортир, кажется, может помочь нам с важным вопросом: определением времени. Но комбинация Angular 4 и Protractor терпит неудачу, когда вы пытаетесь найти поле, используя идентификаторы полей, специфичные для Angular. Я считаю, что это также верно для Angular 5, но я не проверял это на собственном опыте. Пожалуйста, докажите, что я ошибаюсь. :-) - person Tor Thorbergsen; 13.03.2018
comment
Не могу доказать, но чтобы помочь мне понять, почему вы хотите протестировать ngModel, а не только атрибут value вашего ввода? - person David F.; 13.03.2018