Тестирование взаимодействия пользователя с JavaScript - PullRequest
1 голос
/ 28 октября 2011

Я не могу заставить Lettuce / Splinter или JsTestDriver запускать тесты взаимодействия пользователя с объектами DOM, сгенерированными Backbone.Например, на уроке hello backbone я хочу смоделировать щелчок пользователя на кнопке с надписью «Добавить элемент списка», а затем убедиться, что появился элемент <li> текста «hello world1».

JsTestDriver: Я могу получить ссылку на элемент кнопки и вызвать click() для него, но тогда document.getElementsByTagName("li") не удастся (или вернет ноль?).

Йохансенаотлично книга говорит, что тестирование обработчиков событий не является задачей модульного тестирования.Поэтому я попробовал свои инструменты BDD (?) Для Django:

Салат / Splinter / Django: Объект Splinter Browswer не может видеть текст в кнопке, не говоря уже о том, чтобы получить ссылку наэто или щелкните по нему.(Он обрабатывает эти операции для элементов, созданных с помощью HTML.) Ни world.browser.is_text_present (), ни find_by_id () не работают;передача времени ожидания первому не помогла.

Я бы действительно предпочел не идти прямо в Selenium, и подумал, что эти инструменты сделали это ненужным.И что теперь?

1 Ответ

1 голос
/ 31 октября 2011

Хотя запуск событий DOM технически не может быть «модульным тестированием», это не означает, что вы не можете использовать для этого инфраструктуру модульного тестирования :) Это скорее пример определения.

В любом случае, вы можете достичь того, чего хотите, например, с помощью JsTestDriver, но я бы не советовал делать это вручную, например, click() (что, вероятно, не дает того, чего вы ожидаете).Я обычно использую jQuery для запуска событий, и это можно безопасно сделать, например, с помощью JsTestDriver.Это должно работать, даже если вы не используете jQuery в своем производственном коде.

...