2015-01-15 3 views
6

Я хотел бы иметь что-то вроде binding.pry в ruby, в основном, я хочу иметь возможность добавить строку в свой код и отключить отладчик, пока работает карма мой угловой/жасмин тестируетREPL tool for angular/jasmine/karma

it('runs my jasmine test', function() { 
    var a = true; 
    binding.pry // stops code and enters REPL prompt 
    expect(a).toBe(true); 
}); 

результат будет тогда подсказка

#

Где я мог бы сделать что-то для переменных, доступных в этой области видимости, в этот момент времени

# a = false;

Тогда я мог бы выйти и продолжить выполнение.

# exit

Так же, как отладки с помощью средства разработки, но я хотел бы иметь это вне среды браузера и внутри терминала при процессе кармы. Я также нашел https://github.com/alidavut/locus, однако он не работает под кармой.

ответ

3

Я не знаю ни одного способа запуска в Repl в процессе карма, но то, что вы можете сделать, это просто написать:

debugger; 

в точке, где вы хотите отладить. Затем, , если у вас уже есть инструменты разработчика браузера, когда эта строка будет выполнена, выполнение приостанавливается, и вы сможете использовать «наблюдательные выражения», которых может быть достаточно для вас. У вас есть доступ к стеку вызовов и всем локальным переменным. Вы также можете назначить локальные переменные в выражении watch, и новые значения будут сохраняться при возобновлении выполнения.

Я тестировал это только на Chrome. Что я должен сделать, это:

  1. Поместите debugger; заявление в
  2. Start карму..
  3. Откройте инструменты Chrome dev.
  4. Сохраните один из наблюдаемых файлов кармы (так что теперь тесты снова будут запущены с уже открытыми инструментами dev).
  5. Прибыль!

Выполнение REPL на стороне кармы потребует гораздо больших усилий, поскольку весь тестовый код выполняется в браузере. Чтобы управлять REPL из процесса кармы, вам нужно настроить события для связи через сокеты, которые карма настраивает для разговора с браузером. Должно быть выполнимо, хотя, если вы так склонны.EDIT: Фактически, для этого вам все равно нужно будет выполнить выполнение блока Javascript в определенном выражении, и я уверен, что debugger; - единственный способ сделать это.

+0

Печально отладчик не работает в командной строке. Не работает с PhantomJS. Не работает в узлах javascript nodeJS/gulp/other на основе командной строки. – Cosmin

+0

Вы пытались запустить PhantomJS с помощью '--remote-debugger'? http://phantomjs.org/troubleshooting.html –