业力预处理器不是 运行

Karma preprocessor not running

我的 karma.conf.js 包括:

plugins: [
    'karma-jasmine',
    'karma-phantomjs-launcher',
    'karma-ng-html2js-preprocessor'
],
preprocessors: {
    '../../mypath/*.html': ['ng-html2js']
},
ngHtml2JsPreprocessor: {
    moduleName: 'templates'
},

(我也尝试过不指定任何插件。)

我的 devDependencies 包括:

"karma-ng-html2js-preprocessor": "^0.2.0"`

我的测试包括:

beforeEach(module('templates'));

这些给出了错误:

Module 'templates' is not available!

运行 与 --log-level debug 的业力,我 没有 看到任何 [preprocessor.html2js] 条目。 (我确实得到 Loading plugin karma-ng-html2js-preprocessor.

我做错了什么?

问题是模板也必须列在 files 下,并且 preprocessors 中的 glob 模式必须匹配。 documentation.

暗示了这一点
files: [
  '../../Scripts/angular-app/directives/*.html',
  // .js files
],

preprocessors: {
  '../../Scripts/angular-app/**/*.html': ['ng-html2js']
},

请注意 **/*.html 匹配 basePath 的父目录。

当一切正确时,

karma start --log-level debug 将显示 DEBUG [preprocessor.html2js] 个条目。

我还能够删除 plugins 部分。

为了获得正确的缓存 ID,我使用了:

ngHtml2JsPreprocessor: {
    // Load this module in your tests of directives that have a templateUrl.
    moduleName: 'templates',

    cacheIdFromPath: function (filepath) {
        return filepath.substring(filepath.indexOf('/Scripts/angular-app/'));
    }
},

如果模板引用自定义过滤器,则必须在 files 中加载过滤器,并且必须在指令测试中加载过滤器的模块。