Здравствуй уважаемое хабрасообщество.
Не так давно я начал заморачиваться не только тестированием кода на ruby, но и js, которого становиться слишком много в проектах. Со
временем добрался и до IU на js, а для его тестирования понадобилось симулировать всяко-разные события. Поискав, нашёл в одной из библиотек на jquery решение. В расширениях для тестирования была искомая библиотечка для симуляции событий. Но вот незадача, мы используем prototype (я закоренелый рубист и оно мне нравиться), а не jquery.
Немного поразмыслив я решил подправить сие, для использования, как plugin к prototype. Что из этого получилось? Что ж, мне очень помогло в тестах. Если Вы тоже сторонник тестируемого кода — Вам тоже будет полезно.
В использовании выглядит это примерно вот так:
Я намеренно расширял Element, а не Event — мне так кажется логичнее, хотя это можно и обсудить. Сжатая версия весит 3K, с документацией 7K. Git
Для почитателей jquery — выше ссылка.
Не так давно я начал заморачиваться не только тестированием кода на 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 — выше ссылка.