karma-ng-html2js-preprocessor не работает gulp + angular + karma + ng-html2js

Я не могу заставить karma-ng-html2js-preprocessor работать для внешнего шаблона.

Пакет Json-файла:

    .....
    "gulp-karma": "*",
    "karma-coverage": "*",
    "karma-jasmine": "*",
    "karma-ng-html2js-preprocessor": "*",
    "karma-phantomjs-launcher": "*",
    .....

Файл конфигурации кармы:

    config.set({
        browsers: [
             ....
        ],
        frameworks: [
            'jasmine'
        ],
        plugins: [
            'karma-jasmine',
            'karma-phantomjs-launcher',
            'karma-ng-html2js-preprocessor'
        ],
        preprocessors: {
            'app/**/*.html': 'ng-html2js'
        },
        ngHtml2JsPreprocessor: {
            stripPrefix: 'app/'
        }
    });

Файлы определяются в файле сборки и передаются в gulp-karma. Вот определенные файлы:

config = {  test: {
          configFile: '.../karma.conf.js',
          depends: [
              .......
          ],
          files: [
            "app/**/*.js",
            'app/**/*.html'
          ]
       }
    }

Загрузка шаблона в моей спецификации директивы, как показано ниже:

beforeEach(module('app'));
beforeEach(module('app/tem/mytemp.html'));

Я получаю ошибку ниже:

Error: [$injector:modulerr] Failed to instantiate module app/tem/mytemp.html due to:
Error: [$injector:nomod] Module 'app/tem/mytemp.html' is not available! You either misspelled the

В karma debug.html HTML-файлы загружаются в вывод тега ссылки:

<script type="text/javascript" src="/absoluteC:.../app/tem/comp/mydirective.js"></script>
<link href="/absoluteC:..../app/tem/mytemp.html" rel="import">
<script type="text/javascript">
window.__karma__.loaded();

Am I missing anything? How do I debug and move forward from this issue?


person rak    schedule 19.06.2014    source источник


Ответы (2)


Вот как я решил точно такую ​​же проблему:

1) npm install karma-ng-html2js-preprocessor --save-dev (вы это уже сделали)

2) В karma.config.js:

// .... 

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

// ....

ngHtml2JsPreprocessor: {
  stripPrefix: 'app/',  // <-- change as needed for the project
  // include beforeEach(module('templates')) in unit tests
  moduleName: 'templates'
},

plugins : [
    'karma-phantomjs-launcher',
    'karma-jasmine',
    'karma-ng-html2js-preprocessor'
]

3) Поскольку gulp-karma перезаписывает свойство files файла karma.conf.js, измените конфигурацию задачи gulp для ваших тестовых настроек (у меня было два: один test, который запускает тесты один раз, и другой называется tdd для непрерывного тестирования) примерно так:

gulp.task('test', function() {
  var bowerDeps = ...

  var testFiles = bowerDeps.js.concat([
    'app/scripts/**/*.js',
    'test/unit/**/*.js',
    'app/**/*.html' // <-- This is what you need to add to load the .html files 
  ]);

  return gulp.src(testFiles)
    .pipe($.karma({
      configFile: 'test/karma.conf.js',
      action: 'run'
    }))
  ....
});

Надеюсь, это поможет кому-то.

person vekerdyb    schedule 08.09.2014

Я тоже новичок в этом, и я ищу другую проблему, но я думаю, что я немного продвинулся вперед, чем вы (я также понимаю, что этот квест немного устарел).

Я сделал следующее изменение в разделе ngHtml2JsPreprocessor конфигурационного файла Karma.

ngHtml2JsPreprocessor: {
    stripPrefix: 'app/',

    // ADDED THIS: the name of the Angular module to create
    moduleName: "my.templates"
}

Затем в своем тесте я ссылался на это имя модуля вместо имени HTML.

beforeEach(module('my.templates'));

Я надеюсь, что это поможет, даже если уже поздно. Или что кто-то другой находит информацию полезной при поиске.

person Nexeh    schedule 05.09.2014