Я настраиваю единичный тест для угловой директивы с кармой, и я застрял в настройке препроцессора ngHtml2JsPreprocessor. Я попробовал кучу разных способов, как описано в различных потоках в Stack Owerflow, чтобы настроить тесты, но я стараюсь найти способ, который работает для меня.Директива по определению угловой кармы Ошибка: Неожиданный запрос: GET
karma.conf.js
files: [
'bower_components/angular/angular.js',
..
..
..
'test/mock/*.js',
'test/mock/**/*.js',
'test/spec/unit/**/*.js',
'app/views/*.html',
'app/views/**/*.html'
//'app/views/**/**/*.html'
],
preprocessors: {
//'app/views/**/**/*.html': ['ng-html2js']
'app/views/**/*.html': ['ng-html2js']
},
ngHtml2JsPreprocessor: {
// strip this from the file path
stripPrefix: 'app/',
moduleName: 'PreprocessedTemplates'
},
тестовый файл
beforeEach(inject(function ($compile, $rootScope, $templateCache, $httpBackend) {
scope = $rootScope;
//$templateCache.put('/app/views/components/KonstruktStdFilterbox/KonstruktStdFilterbox.html', $templateCache.get('/app/views/components/KonstruktStdFilterbox/KonstruktStdFilterbox.html'));
//$templateCache.put('../../../views/components/KonstruktStdFilterbox/KonstruktStdFilterbox.html', $templateCache.get('../../../views/components/KonstruktStdFilterbox/KonstruktStdFilterbox.html'));
ele = angular.element(
'<konstrukt-std-filterbox title="Testing generic filter Component" items="list" source="data" filter-entity="Dim1"></konstrukt-std-filterbox>'
);
mockupDataFactory = konstruktMockupData.getInstance();
//these variables are needed.
scope.data = mockupDataFactory.pivotedData;
scope.list = ["first","second"];
scope.$apply();
}));
Он терпит неудачу в перед каждым сообщением.
Error: Unexpected request: GET ../../../views/components/KonstruktStdFilterbox/KonstruktStdFilterbox.html
Путь к шаблону является
app\views\components\KonstruktStdFilterbox\KonstruktStdFilterbox.html
Я понимаю, что тест не может найти шаблон в templatecache, но как я могу настроить карму, чтобы иметь PreprocessedTemplates загрузить мой шаблон? Я пробовал различные конфигурации в моем karma.conf.js, см. Прокомментированные строки выше.
Удивительный, рад, что нашел это и спасибо за публикацию этого решения. У меня была такая же проблема, но оказалось, что я забыл поместить параметр stripPrefix в параметр ngHtml2JsPreprocessor, чтобы избавиться от «app /», чтобы он соответствовал пути шаблона templateUrl моей директивы. Я думаю, было бы полезно, если бы в документации указано, что путь, используемый в 'templateUrl', должен соответствовать пути, который загружает карма. – MikeDev
рад, что я мог бы помочь. Похоже, что многие люди борются с этим, поэтому да, безусловно, есть место для улучшения в документации по конфигам кармы. – JohanLarsson