Проблема с шаблонами директив?

Я продолжаю получать эту ошибку при попытке запустить юнит-тесты в моих директивах:

Error: Unexpected request: GET /assets/partials/project-brand.html
No more request expected

Я нахожусь в тупике, что может быть причиной этой проблемы.

Вот мой karma.conf.js:

files: [
  'js/*.js',
  'partials/*.html',
  '../tests/client/unit/*.js'
]
  preprocessors: {
  'partials/*.html': ['ng-html2js']
},

ngHtml2JsPreprocessor: {
  stripPrefix: 'public/'
}

Моя файловая организация:

-public
--js
---directives.js

--partials
---project-brand.html

-tests
--client
---unit
----directives.js

Моя директива:

.directive('projectBrand', [function() {
  return {
    restrict: 'E',
    scope: {
      brand: '=',
      projectId: '=',
      index: '='
    },
    templateUrl: '/assets/partials/project-brand.html',
    controller: ['$scope', function($scope){
      $scope.isWorking = false;
    }]}}])

Наконец, мой тестовый файл с директивами:

beforeEach(module('app'));
beforeEach(module('partials/project-brand.html'));

beforeEach(inject(function(_$compile_, _$rootScope_){
    $compile = _$compile_;
    $rootScope = _$rootScope_;
    $scope = $rootScope.$new();
    $scope.brand = {id: 1};
    $scope.project.id = 1;
    $scope.index = 0;

    element = angular.element('<project-brand brand="brand" project-id="project.id" index="$index"></project-brand>');
    directive = $compile(element)($scope);
    $scope.$apply();
}));

Если у кого-то есть предложения, я буду очень признателен!

2 ответа

Решение

Это было исправление для тех, кто сталкивается с подобной проблемой:

ngHtml2JsPreprocessor: {
  prependPrefix: '/assets/',
  moduleName: 'templates'
}

А в директивах тестовый скрипт:

beforeEach(module('templates'));

Это одна из проблем того, как angular обрабатывает templateUrl. Я столкнулся с той же проблемой и исправил ее, глядя на структуру вашего файла. Пожалуйста, попробуйте 'partials/project-brand.html'. Пожалуйста, дайте мне знать, если это исправлено.

Другие вопросы по тегам