Karma:执行0 of 0错误

时间:2015-03-11 15:43:23

标签: requirejs karma-runner

我想我已经准备好了一切。我遵循了针对RequireJS的Karma教程的规范,但我尝试的所有内容似乎都会导致相同的错误。

似乎我的test-main.js文件正在加载,因为console.log()将会触发。但是,在Object.keys循环中,文件将被列出,但TEST_REGEXP失败,因此allTestFiles最终成为空数组。我确定它是愚蠢的,但它的创建就像教程一样 - 除了使用node_modules作为jquery,require,下划线。

我的test-main.js文件:

var allTestFiles    = [];
var TEST_REGEXP = /test\.js$/;

var pathToModule = function(path) {
    return path.replace(/^\/base\//, '').replace(/\.js$/, '');
};

Object.keys(window.__karma__.files).forEach(function(file)
{
    if(TEST_REGEXP.test(file))
    {
        // Normalize paths to RequireJS module names
        allTestFiles.push(pathToModule(file));
    }
});

if(console) console.log(allTestFiles);

require.config(
{
    // Karma serves files under /base, which is the basePath from the config file
    baseUrl: '/base/src',

    paths:
    {
        'jquery':'../node_modules/jquery/dist/jquery',
        'underscore':'../node_modules/underscore/underscore-min'
    },

    shim:
    {
        'underscore': { exports: '_' }
    },

    // dynamically load all test files
    deps: allTestFiles,

    // kick off jasmine, as it is asynchronous
    callback: window.__karma__.start
});

我的karma.conf.js文件:

 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', 'requirejs'],


        // list of files / patterns to load in the browser
        files: [
          'test/test-main.js',
          {pattern: 'node_modules/jquery/dist/jquery.js', included: false},
          {pattern: 'src/*.js', included: false},
          {pattern: 'test/**/*Spec.js', included: false}
        ],


        // list of files to exclude
        exclude: [
          'src/main.js'
        ],


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


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


        // 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,


        // 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
      });
    };

1 个答案:

答案 0 :(得分:1)

我遇到了问题的解决方案。

我最终将require.config部分上面的test-main.js文件更改为:

// Karma RequireJS configuration
var tests = [];
for (var file in window.__karma__.files) {
    if (/Spec\.js$/.test(file)) {
        tests.push(file);
    }
}

如果我只是将TEST_REGEXP更改为/Spec\.js$/,我最终会收到时间戳错误。我不知道为什么。更有趣的是为什么遵循指南会产生错误。但现在一切正常。

相关问题