AngularJS测试指令无法从URL编译模板

时间:2015-02-03 21:20:56

标签: angularjs angularjs-directive karma-jasmine

我正在为指令编写测试。我希望传入templateURL,然后使用内置的JQlite库测试它的各种功能。

出于某种原因,我的模板似乎没有编译,尽管Jasmine没有给我任何错误。

我的相关应用结构是:

/app
../partials/
../tests/

我的karma.conf设置如此:

files: [
  ...
  'tests/*.js',
  'partials/*.html'      
],

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

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

我的测试代码如下:

describe('mapInputs.customForm', function () {
  var elm, scope;

  beforeEach(module('myApp'));
  beforeEach(module('partials/test/tmpl.html'));

  beforeEach(inject( function (_$rootScope_, _$compile_) {
    $rootScope = _$rootScope_;
    $compile = _$compile_;

    elm = angular.element('<div><ng-map-inputs map-inputs=""></ng-map-inputs></div>');
    console.log('elm', elm);
    elm = $compile(elm)($rootScope);
    $rootScope.$digest();
    console.log('elm', elm);
  }));

  it('should reveal custom form', function () {
    // elm.find('div') returns an empty object
  });
});

输出:

LOG: 'elm', Object{length: 1, 0: <div><ng-map-inputs map-inputs=""></ng-map-inputs></div>}

LOG: 'elm', Object{length: 1, 0: <div class="ng-scope"><ng-map-inputs map-inputs=""></ng-map-inputs></div>}

正如我所说,我没有收到任何错误,但控制台日志的输出并不是我所期望的。好像模板没有被编译?但是,如果找不到模板,Jasmine肯定会抱怨吗?

1 个答案:

答案 0 :(得分:0)

对我来说,问题是我没有在karma.conf.js加载实际指令:

 files: [
  ...
  'path/to/directive/map-inputs.directive.js',  // <-- wasn't being loaded before
  'tests/*.js',
  'partials/*.html'      
 ],