Когда сложность и размер приложения увеличиваются, нецелесообразно полагаться на ручное тестирование надежности, захвата ошибок и регрессионного тестирования новых функций.
Чтобы решить эту проблему, мы установили «Угловой сценарий», чтобы имитировать операции пользователей и помочь нам проверить надежность угловых приложений.
1. Резюме
Мы можем написать сценарии тестов в JavaScript, чтобы описать поведение нашего приложения и взаимодействовать с определенными состояниями. Сценарий состоит из одного или нескольких блоков «ИТ» (мы можем рассматривать их как требования для нашего приложения), которые составляются в очередь команд и ожиданий. Команда сообщает бегуну сделать что -то в приложении (например, перейти на страницу или нажатие кнопки), и ожидание говорит бегуну судить что -то о состоянии (например, стоимость определенного домена или текущего URL). Если какое -либо ожидание не удается, Runner помечает это «это» как «false», а затем продолжается со следующим «It». Сценарий также может иметь блоки «до начала» и «после обучения», которые запускаются до или после каждого блока «IT», независимо от того, пройдет ли он или нет.
В дополнение к вышеуказанным элементам, сценарий также может включать вспомогательные функции, чтобы избежать дубликата кода в блоке «ИТ».
Вот простой сценарий пример:
Описать ('Buzz Client', function () {it ('должен фильтровать результаты', function () {input ('user'). enter ('jacksparrow'); element (': button'). Click (); ожидайте (Repeater ('ul li'). Count ()). li '). Count ()). Toecal (1);Этот сценарий описывает требования сетевого клиента, и явно он должен иметь возможность фильтровать пользователей. Он начинается с ввода значения в поле «Пользовательское» ввода, нажав единственную кнопку на странице, а затем подтверждает, что есть список из 10 элементов. Затем он входит в «Пчелы» в поле «FilterText», а затем убедитесь, что список будет уменьшен только до одного элемента.
В следующей главе API перечислены команда и ожидания, доступные в Runner.
2. API
Исходный код: https://github.com/angular/angular.js/blob/master/src/ngscenario/dsl.js
пауза ()
Приостановите выполнение теста до тех пор, пока мы не вызовут Resume () в консоли (вы также можете щелкнуть по ссылке резюме в интерфейсе бегуна)
спать (секунды)
Пауза тест выполнения в течение N секунд.
Browser (). Navigateto (URL)
Загрузите указанный URL в SetFrame.
Браузер (). Navigateto (URL, FN)
Загрузите URL -адрес, возвращаемый FN в тестовую рамку. Параметр URL здесь просто используется в качестве результата теста. Этот API можно использовать, когда URL -адрес назначения является динамическим (адрес до сих пор неизвестен при написании тестов).
Браузер (). Reload ()
Обновите страницу загруженной в настоящее время в тестовой раме.
Browser (). Window (). href ()
Вернитесь в Window.location.href текущей страницы тестового кадра.
Browser (). Window (). Path ()
Возвращает window.location.pathname текущей страницы тестового кадра.
Browser (). Window (). SARCE ()
Вернитесь в Window.Location.Search текущей страницы тестового кадра.
Browser (). window (). hash ()
Возвращает window.location.hash (не включая #) текущей страницы тестового кадра.
Browser (). location (). url ()
Вернуть результат $ location.url () текущей страницы (http://docs.angularjs.org/api/ng.dlocation)
Browser (). location (). Path ()
Вернуть результат $ location.path () текущей страницы (http://docs.angularjs.org/api/ng.$локация)
Browser (). location (). search ()
Вернуть результат $ местоположения текущей страницы. Search () (http://docs.angularjs.org/api/ng.dlocation)
Browser (). location (). hash ()
Вернуть результат $ местоположения. hash () текущей страницы (http://docs.angularjs.org/api/ng.dlocation)
Ожидайте (будущее). {Matchter}
Определяет, удовлетворяет ли данное будущее значение собоку. Все объявления API возвращают будущий объект с указанным значением, полученным после их выполнения. Сопоставщик определяется с использованием angular.scenario.matcher, и они используют значение будущего для выполнения ожидания. Например:
ожидайте (браузер () .location () .href ()) .toequal ('http://www.google.com');
Ожидайте (будущее) .not (). {matchter}
Определяет, является ли значение данного будущего противоположностью ожидаемым ожиданиям указанного совпадения.
Использование (селектор, метка)
Применение следующего выбора элемента DSL. (Предположительно ограничивает объем селектора, оценки метки используются для тестирования вывода)
пример:
Использование ('#foo', «Foo» текстовое поле). Input ('bar')
привязка (имя)
Возвращает первое привязку, которая соответствует указанному имени (возможно, связано с NG-Bind).
input (name) .Enter (значение)
Введите указанное значение в поле Имя указанной формы.
input (имя) .Check ()
Выберите или снимите флажок указанного имени.
input (имя). Select (значение)
Выберите Input [type = ”Radio”] с указанным радиосреденным значением имени.
input (имя) .val ()
Возвращает текущее значение ввода указанного имени.
Repeater (селектор, метка) .count ()
Возвращает количество рядов ретранслятора, соответствующего указанному селектору (селектор jQuery). Метка используется только в качестве результатов теста.
Repeater ('#Table', «Список продуктов»). Count () // Количество строк
Repeater (селектор, метка) .row (index)
Возвращает массив, связывая строки, указанные в ретрансляторе, соответствующем указанному индексу. Метка используется только для тестирования вывода.
Repeater ('#Table', «Список продуктов»). Row (1) // Все привязки в строке как массив
Repeater (селектор, метка) .column (привязка)
Возвращает массив со значением столбца в ретрансляторе, соответствующем указанной привязке, которая соответствует указанному селектору (селектор jQuery). Метка используется только для тестирования вывода.
Repeater ('#Table', 'Список продуктов'). Column ('product.name') // Все значения во всех рядах в массиве
Выберите (имя) .option (значение)
Выберите опцию, чтобы указать значение в выборе указанного имени.
Выберите (имя) .Option (значение1, значение2)
Выберите опцию (множественное выбор) указанного значения в выборе указанного имени.
Элемент (селектор, метка) .count ()
Возвращает количество элементов, соответствующих указанному селектору. Метка используется только в качестве результатов теста.
Элемент (селектор, метка) .click ()
Нажмите на элемент, который соответствует указанному селектору. Метка используется только в качестве результатов теста.
Элемент (селектор, метка) .query (fn)
Выполнить указанный FN (SelectedElements, DED), а SelectedElement - это набор элементов, которые соответствуют указанному селектору; и выполнена функция, которая будет выполнена после выполнения FN. Метка используется только в качестве результатов теста.
Элемент (селектор, метка). {method} ()
Возвращает возвратное значение выполнения метода на элементе, соответствующем указанному селектору. Метод может быть следующими методами jQuery: Val, Text, HTML, высота, Innerheight, Outerheight, ширина, внутренняя трубка, верхняя трубка, положение, Scrolllfft, Scrolltop, смещение. Метка используется только в качестве результатов теста.
элемент (селектор, метка). {метод} (значение)
Выполните указанный метод на элементе, соответствующий указанному селектору, и используйте ключ и значение в качестве параметров. Метод может быть следующими методами jQuery: Val, Text, HTML, высота, Innerheight, Outerheight, ширина, внутренняя трубка, верхняя трубка, положение, Scrolllfft, Scrolltop, смещение. Метка используется только в качестве результатов теста.
Элемент (селектор, метка). {метод} (ключ)
Возвращает результат выполнения указанного метода на элементе, соответствующем указанному селектору. Этими методами могут быть следующие методы jQuery: attr, prop, css. Метка используется только в качестве результатов теста.
Элемент (селектор, метка). {метод} (ключ, значение)
Выполните метод на элементе, соответствующий указанному селектору и возьмите клавишу и значение в качестве параметров. Этими методами могут быть следующие методы jQuery: attr, prop, css. Метка используется только в качестве результатов теста.
JavaScript - это динамически напечатанный язык, который приносит мощные выражения, но он также дает нам небольшую помощь компилятора. Поэтому мы твердо чувствуем, что любой код, написанный в JavaScript, требует много и всестороннего тестирования. У Angular есть много функций, которые облегчают нам тестирование наших приложений. Поэтому у нас нет оправдания, чтобы не писать тесты. (-_- !!)
Выше приведено набор информации об тестировании angularjs e2e. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!