Имитация пользовательского ввода для JavaScript TDD - PullRequest
6 голосов
/ 21 июля 2011

Мне все сложнее моделировать реальные пользовательские события, используя jQuery или функции триггеров собственных элементов.Например, если у вас есть текстовый ввод и вы не хотите, чтобы пользователь мог добавить символ, вы можете вызвать e.preventDefault() с нормализованным объектом jQuery объекта для события keydown.Тем не менее, нет возможности программно проверить этот сценарий тестирования.

Следующий тест проходит даже без вызова preventDefault, поскольку триггер jQuery keydown не является "реальным" событием.*

Без правильного кода этот тест не может быть выполнен, потому что на входе должно быть значение «testd» (68 - это код символа для «d»).имитировать реальные события пользовательского интерфейса браузера?

Ответы [ 4 ]

4 голосов
/ 21 июля 2011

Имитация реального события довольно сложна.Сначала вы должны определить, какой тип события вам нужен, и создать его с помощью document.createEvent.Затем вызовите другой init*Event для инициализации объекта события.Наконец, используйте element.dispatchEvent для отправки события целевому объекту.

2 голосов
/ 21 июля 2011

Вы, вероятно, хотите попробовать использовать Selenium: http://seleniumhq.org/

Вот хороший обзор: http://blog.frontendforce.com/2010/05/unit-testing-in-javascript-selenium/

0 голосов
/ 12 февраля 2014

Вот репо, который, кажется, обновляется довольно хорошо: https://github.com/mmonteleone/jquery.autotype

0 голосов
/ 22 июля 2011

Полагаю, у YUI был какой-то код для этого. Загрузите их код и посмотрите. Я считаю, что это называется simulate.js или что-то подобное. В качестве альтернативы вы можете посмотреть, как селен это делает.

...