Подтвердить что ты не робот

Как отлаживать пробел Jasmine с Testacular (карма)?

У меня есть небольшой проект с спецификациями Jasmine, и я использую Testacular в качестве моего тестового бегуна. Я не понимаю, как я могу отлаживать, как код приложения, так и код спецификации. Когда я пытаюсь установить контрольную точку в Chrome Dev Tools, она не будет в следующий раз запущена, потому что она загружает файлы каждый раз с новой строкой запроса.

Самое лучшее, что я нашел до сих пор, это использовать console.log(), но я бы предпочел использовать точки останова Chrome Dev Tools.

(Я использую Visual Studio 2012 для разработки.)

Спасибо

4b9b3361

Ответ 1

Testacular - не лучший инструмент для отладки. Его сила заключается в том, что он будет запускать ваши тесты в нескольких браузерах и делать это ЧРЕЗВЫЧАЙНО быстро и может делать это каждый раз, когда вы меняете файл, поэтому он скажет вам, что вы нарушили тест. Но если вам нужно отлаживать, это не лучший инструмент.

В самом деле вы можете поставить оператор "отладчик" в свой код, чтобы он мог сломаться, но вы можете в конечном итоге ударить ту же самую точку останова десятки или более раз в своих тестах, если это общая строка кода, которая попадает в несколько тесты. Если это возможно только в одном сценарии, вам нужно пропустить все точки останова, кроме одного случая, когда вы видите проблему. Если вы используете мокко или жасмин, есть способ запустить только один тест во всем наборе тестов. С жасмином, который меняет этот один тест из него() на iit(), с моккой это он. Только(). Но даже в этом случае testacular по-прежнему является неправильным инструментом для этой работы.

Лучшим решением является использование другой тестовой "установки" и просто запуск одиночного теста, который ломается. Это легко осуществить с использованием жасмина или мокки или независимо от того, какой выбор вы используете. Вы уже будете писать тестовые тесты в одной из этих рамок, поскольку testacular - это инструмент автоматизации, а не тестовая среда. Так что просто создайте файл тестового бегуна и используйте его, загрузите файл и, если вы используете хром, зайдите в инструменты разработчика, нажмите Command-O на MAC или Control-O на окнах и выберите файл, который вы хотите поставить точку останова и установить точку останова, и вы готовите с газом.

Использование традиционного "тестового бегуна" с вашей тестовой структурой не будет конфликтовать с использованием testacular вообще. Они будут счастливо работать.

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

Жасмин: http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/

QUnit: http://www.testdrivenjs.com/getting-started/qunit-setup/

Мокка: У меня нет ссылки на хорошую статью для этого. К середине февраля 2013 года будет опубликован мой PluralSight, курс com по тестированию клиентского JavaScript, и вы можете найти его там, а также подробные указания по настройке QUnit и Jasmine. У них есть небольшая бесплатная пробная версия, которую вы можете использовать для просмотра контента без оплаты. Этот URL-адрес будет ссылаться на этот курс, когда он будет опубликован. http://pluralsight.com/training/Authors/Details/joe-eames

Ответ 2

Вы можете использовать оператор debugger; самостоятельно, и Chrome будет разбиваться на этот оператор, если панель инструментов разработчика открыта, а точки останова включены.

Ответ 3

Мой любимый подход к отладке тестов с помощью Karma (был Testacular) - использовать этот плагин:

Я запускаю Карму следующим образом:

karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml

Это открывает Карму в режиме отладки с помощью кнопки "Отладка". Когда вы нажимаете на это, он запускает все тесты в окне Chrome и показывает результаты по мере их прохождения. На этом этапе вы можете использовать инструменты разработчика, установить контрольные точки, вставить код и т.д., Как обычно.

Еще лучше, вы можете нажать на неудачный тест, и он переключится на режим, когда он запускает только один тест. Теперь вы можете быстро протестировать и отладить этот тест без необходимости ждать, пока все остальные будут запущены.

Чтобы увидеть это в действии, здесь запрос на перенос GitHub, где я добавил эту библиотеку в наш проект:

https://github.com/edx/edx-ui-toolkit/pull/12