使用ng-html2js-preprocessor

时间:2015-11-21 11:32:50

标签: angularjs unit-testing angularjs-directive karma-jasmine ng-html2js

我有一个带有模板网址的角度指令。我正试图用业力测试指令。因此,使用ng-html2js-preprocessor获取指令的html。

我的项目文件夹结构是

var
   www
      myproject
           assets
               templetes
                    directive.html
               js
                    directive.js
           karma
               karma.config.js
               directive.test.js

这里myproject是我的项目文件夹。因此var / www在某些其他环境中可能会有所不同。

在directive.js中我已经:

  restrict: 'E',
  scope: true,
  replace: false,
  templateUrl: '/templates/directive.html',

现在我写了karma.config.js文件

 preprocessors: {
  '../assets/templates/**/*.html': ['ng-html2js']
 },
 files: [
 ..., (Some library files like angular, jquery etc...)
 '../assets/js/directive.js',
  './*.test.js',
  '../assets/templates/**/*.html'
 ]

在日志中运行配置文件后,我看到了:

DEBUG [preprocessor.html2js]: Processing "/var/www/myproject/assets/templates/directive.html".

DEBUG [watcher]: Resolved files:
/var/www/myproject/assets/templates/directive.html.js

在我写的测试文件中

beforeEach(module('/var/www/myproject/assets/templates/directive.html'));

beforeEach(inject(function($rootScope, $compile, defaultJSON, $templateCache) {
var template = $templateCache.get('/var/www/myproject/assets/templates/directive.html');
$templateCache.put('/templates/directive.html', template);
 }));

这段代码工作正常,但我的问题是路径/ var / www在每个环境中都不一样可能是其他一些用户将项目保留在其他路径中然后它将无法正常工作。所以我需要添加一些相对路径。谁能告诉我如何在这里添加相对路径?

我试过

ngHtml2JsPreprocessor: {
  stripPrefix: '*/myproject/assets'
},

在karma.config.js文件和测试文件中:

 beforeEach(module('/templates/directive.html'));
 var template = $templateCache.get('/templates/directive.html');

但它没有用,显示错误无法实例化模块'/templates/directive.html'

我也试过

ngHtml2JsPreprocessor: {
  moduleName: "my.templates"
},

在karma.config.js文件和测试文件中:

 beforeEach(module('my.templates'));
 var template = $templateCache.get('/templates/directive.html');

但它也失败了。请帮我解决这个问题并添加相关网址。

0 个答案:

没有答案