Как «честно» симулировать события

    Здравствуй уважаемое хабрасообщество.
    Не так давно я начал заморачиваться не только тестированием кода на ruby, но и js, которого становиться слишком много в проектах. Со
    временем добрался и до IU на js, а для его тестирования понадобилось симулировать всяко-разные события. Поискав, нашёл в одной из библиотек на jquery решение. В расширениях для тестирования была искомая библиотечка для симуляции событий. Но вот незадача, мы используем prototype (я закоренелый рубист и оно мне нравиться), а не jquery.

    Немного поразмыслив я решил подправить сие, для использования, как plugin к prototype. Что из этого получилось? Что ж, мне очень помогло в тестах. Если Вы тоже сторонник тестируемого кода — Вам тоже будет полезно.

    В использовании выглядит это примерно вот так:

    $('foo').simulate('keypress', Event.KEY_RETURN);

    $('foo').simulate("drag", {
    dx: 10,
    dy: 0,
    onComplete: function(element){
    alert('drag simulation $(' + element.id + ')');
    }
    });


    Я намеренно расширял Element, а не Event — мне так кажется логичнее, хотя это можно и обсудить. Сжатая версия весит 3K, с документацией 7K. Git

    Для почитателей jquery — выше ссылка.

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 10

      0
      Чем не подошел Selenium?
        0
        Тем, что эте немного другой способ тестировать js, как мне кажется — не совсем то, что мне нужно. Таким образом можно запустить тесты написаные на чистом js во всех браузерах, каких нравиться используя только этот плагин. Селениума слишком много для этих целей :)
          0
          А, ну если вы ограничиваетесь тестами кода, тогда да, согласен.
            0
            Так как проектов много и в каждом не хочеться писать велосипед, то пишется много библиотечных вещей, а первым объектом тестирования была UI библиотека, а не готовый интерфейс. Мне кажется, что такой способ тестирования в случае библиотеки гибче. Тесты проще писать и поддерживать.

            Используюя нехитрые библиотеки, можно также удобно одной командой в консоли или shell-скриптом/батником запускать тесты во всех браузерах, доступных в системе.

            Тесты могут быть не обязательно unit, но и функциональные. Неплохим примером такого подхода могут служить библиотеки prototype и jquery.
          0
          Не знаю почему, но у меня Selenium «валит» Firefox почти каждый раз. Уже пробовал сколько раз ставить и на основной системе и на чистых виртуалках. Пробовал разные версии FF от 3.0 до 3.6.2 — падает.

            0
            А под какой ОС у Вас FF падает и какая варсия Selenium?
              0
              Вначале была Vista sp2 x64 c FF 3.5
              Сейчас Windows 7 x32 c FF 3.6.2 + последний Selenium.

              Появляется обычный краш FF :)
                +1
                Хм… Видимо проблема такая не у Вас одного. Ещё здесь было что-то.
                  0
                  Спасибо большое, почитаю на досуге
          +1
          Чёрт, я почему-то подумал что речь про оргазм пойдёт

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое