Visual Studio 2012 で Resharper を使用して Jasmine テストを実行しているときに、JavaScript コードをデバッグ (ウォークスルー) する方法が見つかりません。ブラウザー (Chrome) でテストを実行しようとしましたが、テストが実行されるとすぐにテスト ランナーがポートを閉じて、そのため、コードにブレークポイントを配置できません。また、Internet Explorer で実行して、Visual Studio にブレークポイントを配置しようとしましたが、プロセスにアタッチされません。私のテストには、Resharper がテスト ランナーに自動的に含める多くの ///reference スクリプトがありますが、デバッグするすべてのテストに対してこれを手動で実行したくありません。これを理解するのを手伝ってください。ジャスミン テストが失敗した場合、どのようにデバッグしますか?
4 に答える
仕事ができなかったのでdebugger;
、別の解決策を見つけました。以下をテストに追加すると、テストが終了したことが resharper に通知されなくなり、開いているブラウザー (私はクロムを使用) にデバッグ ブレークポイントを設定し、ページを更新 (F5) できます。
jasmine.getEnv().currentRunner_.finishCallback = function () {};
Jasmine 2.0 以降、以下を使用する必要があります。
ReSharperReporter.prototype.jasmineDone = function () { };
完了したら、resharper テストランナー ウィンドウでテストを停止します。
また、これは QUnit に対しても実行できます
QUnit.moduleDone = function(){}
debugger
キーワードを使用してみてください。デバッグしたいコードに次の行を追加するだけです (おそらく仕様に):
debugger;
利用可能なデバッグ機能を呼び出します。IE では動作しませんが、Chrome ではかなりうまく動作します (使用すると書いてあるので、デバッグだけで十分だと思います)。
もちろん、その後は必ずdebugger
キーワードを削除してください! おそらく、本番コードで一般的にそれを回避する簡単な方法はありませんが(仕様だけでなく使用する場合)、この SO の質問に興味がある場合は役立ちます。
resharper と phantom js を使用したジャスミン テストのデバッグに投稿したように
デバッガーを入手しました。ReSharperオプションでIE 11をテストブラウザーとして設定することで動作します。優れた点は、コードの Visual Studio バージョンにブレークポイントを設定し、Visual Studio を使用して設定およびデバッグできることです。ブラウザと対話する必要はありません。
これは古い質問であり、この回答はトピックから少し外れていることは知っていますが、コールバックを妨害したくない場合は、Chutzpah テスト ランナーのコンテキスト メニューでサポートできます。resharper/phantomjs でテストを実行し (タブが爆発しないように)、Chrome (またはお好みのブラウザー) で右クリックしてデバッグします。