web-dev-qa-db-ja.com

Karma --auto-watchが機能しなくなりました

私のKarmaインストールは自動監視に使用されていました-.jsファイルを保存すると、テストが再実行されました。 JavaScriptを実行してから2か月が経ちましたが、今度は再びJavaScriptを使用するようになり、自動監視機能が機能しなくなりました。ここに私のkarma.confがあります:

module.exports = function (config) {
    config.set({

        // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: '../',


        // frameworks to use
        // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ['jasmine'],


        // list of files / patterns to load in the browser
        files: [
          'jQuery/jquery-1.10.2.js',
          'jasmine/jasmine.js',
          'jasmine-jquery/jasmine-jquery.js',
          'Angular/angular.js',
          'Angular/angular-route.js',
          'Angular/angular-mocks.js',
          'Angular/angular-animate.min.js',
          'Angular/angular-sanitize.min.js',
          'Angular/angular-cache.min.js',
          'emcommon.js',
          'Moment/moment.js',
          'ViewModels/Common/*.js',
          'ViewModels/Settings/*.js',
          'Tests/Common/*.js',
          'Tests/Settings/*.js',
        ],

        // list of files to exclude
        exclude: [
        ],


        // preprocess matching files before serving them to the browser
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: {
            '../ViewModels/**/*.js': 'coverage'
        },


        // test results reporter to use
        // possible values: 'dots', 'progress'
        // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ['progress', 'coverage'],

        coverageReporter: {
            type: 'html',
        },

        // web server port
        port: 9876,


        // enable / disable colors in the output (reporters and logs)
        colors: true,


        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_INFO,


        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: true,
        usePolling: true,


        // start these browsers
        // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: ['Chrome'],

        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: false
    });
};

私はアドバイスを読み、それに従いました hereusePollingをtrueに設定してみました。私は3つの異なるプログラムを使用してファイル(VS、Sublime、およびメモ帳)を保存し、それを除外しました。 Karmaを停止して再起動すると、変更が反映され、期待どおりに合格/不合格になりますが、実行中にファイルが変更されることはありません。

Karma 0.12.7から0.13.0に移行しても問題は変わりません。

18
TarkaDaal

出力はどこですか?

まず第一に、以下のCLIオプションを使用して実行の出力を表示すると、いくつかの助けになると思います。

# add --single-run, or kill the process manually when finished.
karma start karma.conf.js --auto-watch --log-level debug > log.txt

次に、log.txtの内容を Pastebin に貼り付けます。それはおそらくあなたの質問の編集として置くには大きすぎるでしょう。


別のブラウザでしょうか?

また、Chromeとは異なるブラウザーを実行してみます。maykarma-runner#のすべての例のように問題の原因であることを否定しません。 895 は、選択したブラウザーとしてChromeを表示します(これは古い問題であり、その外観によって解決されています)。

PhantomJSやChrome Canaryで試してみて、うまくいくかどうかを確認してください。


タスクランナーと一緒に行きますか?

ローカルセットアップの一部として、タスクランナーがいますか?その場合は、kill--auto-watchを使用して、選択したタスクランナーで同等のソリューションを使用できます。

グラントタスクを設定する方法は次のとおりです。

karma: {
  options: {
    configFile: 'karma.conf.js'
  },
  watch: {
    background: false,
    singleRun: false
  }
}

次のkarma.conf設定で:

module.exports = function(config) {
  config.set({
    frameworks: ['mocha'],
    basePath: '',
    files: [ /** redacted **/ ],
    urlRoot: '/base/app/',
    reporters: ['progress'],
    logLevel: config.LOG_INFO,
    browsers: ['PhantomJS'],
    singleRun: true
  });
};

Sudoで実行してみてください。


空白のスレート構成

karma init newconf.jsを実行してから、これを試してみてください。

karma start newconf.js --auto-watch

私はあなたのテストからいくつかの出力を見ることがここで非常に役立つと思います。そしてできればいくつかのバージョン番号:

  • Chrome
  • NodeJS
  • カルマ
  • テストフレームワーク(Mocha/Chai、Jasmine)

編集#1

次のようなkarma.confを試してみてください。

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
      'some_jasmine_spec.js',
    ],
    reporters: ['progress'],
    port: 9000,
    colors: true,
    logLevel: config.LOG_DEBUG,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

some_jasmine_spec.jsファイルは次のようになります。

describe('dummy_test', function() {
  it('just runs', function() {
    expect(true).to.be.false;
  });
});

some_jasmine_spec.jsファイルを、削除されたkarma.confと同じフォルダーに配置し、別の結果が得られるかどうかを確認します。


編集#2

files配列の最後の行が読み取られていないことに気づきました。最初のログファイルの出力を確認する場合:

# The last DEBUG [watcher] entry
# 27 - [36m17 07 2015 14:35:37.160:DEBUG [watcher]: [39mWatching "c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings"

# The last DEBUG [web-server] entry
# 102 - [36m17 07 2015 14:35:38.321:DEBUG [web-server]: [39mserving (cached): c:/Projects/Gazelle - EstateManager/DEV-Container/(9112) ViewDevice/EstateManagerUI/EstateManagerUI/Scripts/Tests/Settings/viewschedulemodule.tests.js

したがって、./*/*.jsパターンのファイルはどれも読み取られていません。

./**/*.js、または**/*.jsに変更してみます。

たとえそうであっても、ダミーのジャスミンテストは、含まれていないファイルに関連していればトリックを実行するはずでした。

#3を編集

ここではアイデアが不足していますが、

basePath../に変更して、他のすべてのファイル参照から../を削除してみます。これは、「有効な」懸念というよりも、私の(かゆい)好奇心を掻くものです。しかし、ちょっと、試しては問題ありません。


#4を編集

最後の溝の努力;ターミナルを開いて次を実行します(申し訳ありませんが、UNIXベースのシステムを使用しています-私のMS-DOSは標準に達していないので...)それをすべてクリーンアップしましょうキャッシュを削除し、必要なパッケージを再インストールして、もう一度試してください。

クリーンアップ/アウト

  • $ rm -rf node_modules # clean out your local node modules
  • $ npm cache clean # clean out the npm cache
  • $ npm uninstall karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # uninstall assorted karma/jasmine libraries globally

バックアップ

  • $ mv karma.conf.js karma.conf.bak.js # backup your karma.conf

再インストール

  • $ npm install karma karma-cli karma-chrome-launcher karma-coverage karma-firefox-launcher karma-ie-launcher karma-jasmine jasmine -g # reinstall assorted karma/jasmine libraries globally
  • $ npm install # reinstall your local node modules

再初期化

  • $ karma init # initialise a new karma.conf.js file
    • 新しいkarma.conf.jsファイルに可能な限り変更を加えない
  • $ karma start karma.conf.js --auto-watch --log-level debug
    • オプションで、上記を新しいlog.txtにパイプしてアップロードします。
    • これは、2つを比較して、何かreallyが目立つかどうかを確認できるようにするためです。

デバッグ

新しいkarma.conf.jsファイルでsingleRunfalseに設定されていることを確認してから、接続されているブラウザーをポップオープンしてhttp://localhost:9876に移動します。

デバッグボタンを押して、開発ツール(Webインスペクター/コンソール)を開き、ページをリロードするとどうなるかを調べます。

これで何も変わらない場合、私は途方に暮れています。

24
Kasper Lewau

記録のために、私は最終的にそれを修正しました:

  • ローカルのnode_modulesに新しいフォルダーを使用する
  • git bashシェルを使用する
  • PYTHON環境変数がgit bashスタイルのセパレータを使用して設定されていることを確認します
  • karmaバージョンv0.12.0のインストール

いずれにせよ、それだけではうまくいきませんでした。これが他の誰かを助けることを願っています。

6
TarkaDaal