Karma --auto-watch不再有效

时间:2015-07-15 11:17:12

标签: javascript angularjs jasmine karma-runner karma-jasmine

我的Karma安装用于自动监视 - 当我保存.js文件时,它会重新运行测试。自从我做了任何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
    });
};

我已阅读并遵循建议here。我已经尝试将usePolling设置为true。我已经使用了三个不同的程序来保存文件(VS,Sublime和Notepad)来排除这种情况。如果我停止Karma并重新启动它,它会接收更改并按预期通过/失败,但在文件运行时不会看到文件发生变化。

从Karma 0.12.7移动到0.13.0对问题没有任何影响。

2 个答案:

答案 0 :(得分:24)

输出在哪里?

首先,我认为使用以下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不同的浏览器,我不排除可能成为问题的原因{{3}中的每个示例}显示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

我认为从测试中看到一些输出在这里会非常有用。最好是一些版本号:

  • 的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并上传。
    • 这样我们就可以比较两者,看看真的是否突出。

调试

确保在新的karma.conf.js文件中将singleRun设置为false,然后弹出已连接的浏览器并转到http://localhost:9876

按调试按钮,打开您的开发工具(Web检查器/控制台),并调查重新加载页面时发生的情况。

如果这没有任何区别,我会感到茫然。

答案 1 :(得分:6)

为了记录,我最终通过以下方式修复了它:

  • 为我的本地node_modules使用新文件夹
  • 使用git bash shell
  • 确保使用git bash样式分隔符设置PYTHON环境变量
  • 安装Karma版本v0.12.0

无论如何,对我来说,这一切都不起作用。希望这有助于其他人。