Как я могу использовать узел отладки Cli с Jest?

Как я могу просто использовать отладчик cli/repl для узла с Jest?

Документация Jest использует ноду-инспектор, но он устарел / устарел на Node 6.3. Я все равно попробовал рекомендуемую команду на узле 7.7.4:

node --debug-brk ./node_modules/.bin/jest --runInBand --no-cache [your_test_file]

Но это просто зависит от следующего (предположительно ожидающего на узле-инспекторе):

(node:13452) DeprecationWarning: node --debug is deprecated. Please use node --inspect instead. Debugger listening on 127.0.0.1:5858

я добавил --inspect как указано в предупреждении, но даже тогда исполнение не останавливается на моем debugger заявление в Chrome DevTools.

Это кажется слишком сложным для очень простого варианта использования.

2 ответа

Я нашел следующую команду работает:

node debug ./node_modules/.bin/jest --runInBand --no-cache [your_test_file]

... но с некоторым странным поведением. Когда отладчик впервые останавливается, вы увидите:

break in node_modules/jest/bin/jest.js:10
  8  */
  9
>10 'use strict';
 11
 12 require('jest-cli/bin/jest');
debug>

Очевидно, Jest всегда внедряет эту точку останова, чтобы у вас было время открыть Chrome DevTools (не имеет значения в нашем случае, так как мы будем использовать только cli/repl).

Продолжить эту точку останова с помощью cи через короткое время (без каких-либо признаков, конечно, что все идет вперед) вы должны увидеть свою точку останова:

break in webpack/assets/react/components/presentation/Feed/Comments/Comment/commentSpec.jsx:12
 10     var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_comment2.default, { loading: true }));
 11
>12     debugger;
 13     expect(wrapper.find(_button2.default)).to.have.length(1);
 14   });
 debug>

Последнее, что странно, это то, что вам нужно набрать repl для проверки объектов, как описано в Отладчике узлов и Проверке переменных с помощью встроенного отладчика узла?

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

Из узла v8.4 debugger Ключевое слово в коде фиксируется для контекста VM. Ссылайтесь на этот мерзавец.

1.Введите ключевое слово отладчика в свой код Jest:

describe('Testcase definition', () => {
   it('should be defined with subobjects', () => {
     debugger; // <-- This keyword breaks on Chrome inspect
     expect(true).toBe(true);
   });
});
  1. Команда для запуска:

    узел --inspect-brk --inspect ./node_modules/.bin/jest -i tests/mytest.test.js

  2. Теперь откройте http://chrome//inspect/ в Chrome. Вуаля!

Другие вопросы по тегам