Как стать автором
Обновить

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

А моки есть?
А разве для них необходим какой-то особый функционал фреймворка? Всегда думал, что для создания моков достаточно стандартных средств языка.
Если опишете подробнее, что именно требуется, то почему бы и нет — добавлю!
Суть в том чтобы просто замокать объект, настроить мок, иметь возможность проверить его вызовы и после теста очистить мок.

Например, было бы приятно делать что-то наподобии:

var myMock = test.mock('namespace.Class.prototype.method').returnValue('test');

// логика теста, которя использует namespace.Class.prototype.method

myMock.hasCalls(['this', 'arg1', 'arg2], ['this', 'arg3', 'arg4']);


Отдельного внимае можно уделить мокам window.location, window.history и тд.
можно вопрос? а чем от Qunit отличается, кроме того, что выводится в консоль?
  1. В Qunit есть киллерфича — смена последовательности запуска тестов, в зависимости от предыдущего результата. Из-за чего нажимая на F5 есть реальный шанс получать разное количество пройденных/проваленных тестов. В test.it — один и тот же тест одного и того же кода, всегда выдаёт один и тот же результат.
  2. В Qunit есть только 2 уровня вложенности — тест и модуль. В test.it — неограниченный уровень вложенности групп (группы в test.it чем-то идейно близки тестам в Qunit).
  3. Qunit не выводит (не всякий раз выводит / криво выводит) тестируемые данные, что мешает отладке, заставляя писать рядом с тестами console.log(). В test.it во всех тестах, в не зависимости от результата выводится массив с переданными аргументами.
  4. Для тестирования асинхронного функционала Qunit предлагает ставить на паузу своё ядро методом stop() и возобновлять его спустя какое-то время методом start(). В test.it асинхронные тесты и группы никак не мешают остальным и могут отрабатывать в принципе без попадания в общий результат.
  5. Всё-таки! В Qunit весь результат выводится на страницу, что, по моему субъективному мнению. является огромным недостатком. В test.it весь результат выводится в консоль из-за её огромных возможностей для отладки. Я мало работал с асинхронными тестами в Qunit. Так что если в этом пункте ошибаюсь — смело меня поправляйте.
  6. Рюшечки! В Qunit нету вывода времени затраченного на ok или equal, нету возможности добавить в результат trace, нету callback'ов зависящих от результата, нету возможности использовать результат теста дальше в коде.

Имхо рюшечки самый малозначимый пункт. Главные отличия перечислены в первых пяти.
после этого
equal({a:1,b:2},{a:1,c:2},'obj equal');

[---] initial test : obj equal qunit-logging.js:45
(actual = Object, expected = Object)

Считаю этот репозиторий абсолютно бессмысленным.
В то время, когда в консоли есть огромный функционал для просмотра сложных объектов, выводить их туда через .toString() — кощунство.
Но смотреть в консоли полотнища репортов, тоже не комильфо… да и поиск не особо, у Qunit есть возможность раскидать по модулям, а потом выбрать в selectbox интересующий нас модуль, значительно лучше чем пролистывать полотнища в консоли.
В test.it можно выводить отдельно только одну группу и даже только один тест, не важно как глубоко они вложены.
Более того можно вывести часть одной группы, 1 тест из другой, 1 тест который находиться вне групп и ещё одну целую группу. (можно — не значит нужно) Это не будет полотнищем.

И, кстати все группы со статусом 'pass' по-умолчанию выводятся свёрнутыми, что тоже значительно сокращает полотнище, до, буквально, десятка строк, на сотни и даже десятки сотен тестов.

Напоминаю, в test.it в отличае от Qunit настоящая многоуровневая вложенность. Если про это забывать, то и действительно можно получить огромные полотнища в стиле Qunit.
Поясню.
Я считаю вывод в консоль преимуществом не потому, что выводить сложные данные на страницу — плохо (хотя и это в какой-то степени тоже), а потому что выводить их в консоль — хорошо.

Консоль в отличае от HTML обладает следующими возможностями:
  • встроенной поддержкой древовидной структуры данных
  • умением перемещаться вверх по прототипам
  • различием в отображении различных типов данных
  • переходом по клику на определённую строчку в коде
  • переходом по клику на определённую ветвь в DOM дереве
  • группировкой вывода
И это далеко не полный список.

Конечно это всё можно реализовать в HTML.
Но, во-первых — ни Qunit ни даже Jasmine не стали заморачиваться над этой довольно сложной задачай. Во вторых — зачем это реализовывать, если оно уже всё давно реализовано в консоли?
А как быть с браузерами, которые не поддерживают новомодные фичи консоли?
Operа больше не существует, для IE есть плагин о котором была статья на хабре (кстати надо бы его хорошенько протестировать). Если вы про всякие Konqueror и иже с ним. то мне остаётся только посочувствовать и предложить использовать другой фреймворк.

Если что, я планирую в ближайшем будущем заняться портом под node.js. И практически всё, что он из себя будет представлять — переписанный модуль вывода в консоль. Он позволит комфортно (более менее) себя чувствовать даже в браузерах, которые только console.log и умеют
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации