2013-04-09 3 views
50

ユニットテストを壊すときにデバッグする最良の方法を見つけようとしています。通常、以前のテスト環境では、ブラウザでテストを実行し、テストまたはコードをブレークポイントし、テストが失敗した理由を確認することができました。私はそれをどのようにして勉強するのか分かりません。単体テストを簡単にデバッグする方法はありますか?testacular(now karma)を使用しているブラウザでデバッグ

+6

ハア!彼らが名前を変えたのは驚きではない。 – Joe

+1

「カルマ」という名前はあまりにも一般的で、あまりにも多くの異なるアイデアに適用されていると思います。彼らはtestacular imoに戻ってください:) – Lucas

+0

非常に驚くほど長い会話はここhttps://github.com/karma-runner/karma/issues/376 結論:人生、意見、行動の多様性はコーダーのコミュニティに反映されています。 – Joe

答えて

47

"browsers = ['Chrome'];あなたのkarma.configファイルにあります。

クロムが開くと、上部に「カルマ接続」が表示され、右上に「デバッグ」ボタンが表示されます。

このデバッグボタンをクリックすると、 "カルマデバッグランナー"タブが開きます。次に、通常どおりに右クリックして要素を調べ、デバッグするだけです。カルマの設定ファイルに偽として「singleRun」に設定し

+0

これはこのスレッドに何も追加していないと感じています。 – Lucas

+14

@Lucasなぜですか?これはカルマがブラウザでテストをデバッグしようとした方法です。受け入れられた回答は機能しますが、これはランナーにすぐ焼かれた、より単純で柔軟な選択肢です。私は質問のポイントを逃していますか? –

+6

これは私にとって最高の解決策であるようです。このリンクを使用してテストを実行すると、デバッグツールのコンソールウィンドウにエラーが表示され、必要に応じて再ロードして再実行できます。 – Allen

0

コンソールでは、it()ステートメントが壊れていること、およびその理由を通知する必要があります。たとえば:

Todos Add a new todo should add a new todo FAILED 
expected todo.length to be 1 but was 0 

しかし、あなたはそれが便利なあなたのkarma.conf.jsファイルに

logLevel = LOG_DEBUG; 

を設定することがあります。 karma.conf.js

+1

これはまだ私に何をお探しですか?たとえば、次のようなエラーがあります。 'TypeError:プロパティ'を読み取ることができません '未定義のcharAt'は、何を修正する必要があるかを知るために少しあいまいです。 私はクロムでカルマを走らせる方法を探しています。クロムブレークポイントを使って、何が起こっているのかを知ることができます。 – Lucas

66
  1. browsers = ['Chrome']; 
    
  2. あなたの失敗の仕様で:

    it('spec', function() { 
        debugger; // This is like setting a breakpoint 
        // ... 
    }); 
    
  3. 実行カルマ。
  4. 新しく開いたChromeブラウザにアクセスし、コンソールを開いてページを更新します。

Chromeの[開発ツール]の[ソース]タブでは、デバッガで実行が停止しているはずです。

+0

はい!これは私が探していたものです...ブレークポイントの方法で、コンテキストを見ることができます。偽 してからちょうどテストであっ開き、ブレークポイントのブラウザ、またはコードにアクセスしてください:D – Lucas

+7

はまた、あなただけの singleRunにカルマを設定できることに気づきました「あまりにも。 – Lucas

+1

それは 'ブラウザ= [「Firefoxの」]で動作します –

9

私は(「デバッガ」の文を追加するような)コードの変更を行うために必要としない、デバッグに以下の方法を見つけた

、その結果、カルマますデバッグポートでリッスンして、ブラウザでテストを再実行して、下記のURLを起動してデバッグすることができます。

Go to the captured browser and click the "DEBUG" button (or open http://localhost:9876/debug.html) and use the web inspector to see what's going on. (You may need to refresh the debug.html page for it to kick in once the web inspector is open.)

関連する問題