LoginSignup
0
2

More than 5 years have passed since last update.

Node.jsのMochaのテストコードをChromeの開発ツールでデバッグする

Posted at

v6.3.0以降のNode.jsでは --inspect を指定することでChromeの開発ツールでデバッグできるようになっています1--inspect-brk を指定するとプログラムの先頭にブレークポイントが設定されます。ですが、Mochaのテストコードを開発ツールでデバッグしようとするとMochaのスタートアップルーチンで停止してしまうので、まだテストコードもテスト対象のプログラムもロードされておらず、デバッグしたい箇所にブレークポイントを設定することができません2
このような場合、以下の操作でブレークポイントが設定できます。

REPLでテスト対象のプログラムにブレークポイントを設定する

  1. コマンドラインから node --inspect でREPLを起動し、開発ツールから参照します。(→手順)
  2. 開発ツールの Console から require() でテスト対象のプログラムをロードします。
  3. 開発ツールの Sources からテスト対象のプログラムを選択し、適当な場所(コンストラクタが最適と思われる)にブレークポイントを設定します。
  4. 開発ツールを閉じ、コマンドラインから起動したREPLも終了させます。

テストプログラムを開発ツール内で走行させブレークポイントで停止させる

  1. npm test -- --inspect-brk テストプログラム名 でテストプログラムを走行させ、開発ツールから参照します。
  2. Mochaのスタートアップルーチンで停止している状態なので、開発ツールのデバッガの再開ボタンを押下し、プログラムの走行を再開させます。
  3. テスト対象のプログラムの先ほど設定したブレークポイントでプログラムが停止するはずです。開発ツールがセッションをまたがってブレークポイントを覚えていてくれるのがミソです。

テストコードにブレークポイントを張る

  1. ここまでくれば、すでにテストコードもロードされた状態になっているはずなので、開発ツールの Sources からテストプログラムを選択し(かなりの数のプログラムがロードされるので探すのがちょっと面倒です)、デバッグしたい箇所にブレークポイントを設定すればOKです。

  1. https://nodejs.org/en/docs/inspector/#command-line-options 

  2. そもそもテストの失敗理由はアサーションで知るべきであり、テストコードをデバッガで参照するなど邪道なのですが、それでもデバッガで追いたくなる場合もあるものです。 

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2