测试AngularJS指令不会替换模板

时间:2014-06-17 13:01:56

标签: javascript angularjs unit-testing angularjs-directive karma-runner

我正在使用karma-ng-html2js-preprocessor。

目录结构类似于

-app
--directives
---gamelabel
----gamelabel.js
----gamelabel.html
-test
--gamelabel.test.js

karma.conf.js:

module.exports = function(config) {
  config.set({
    preprocessors: {
     'app/directives/gamelabel/gamelabel.html': ['ng-html2js']
    },
    ngHtml2JsPreprocessor: {
      stripPrefix: 'app/',
      moduleName: 'templates'
    },
    frameworks: ['jasmine'],

    files: [
      // BOWER
      [...bower components...] 

      // MOCK
      'test/mock/**/*.js',

      // SOURCES
      'app/app.js',
      'app/config.js',

      'app/**/*.mod.js',
      'app/common/config/config.pro.js',
      'app/directives/gamelabel/*.*',

      // TEST
      'test/*.test.js'
    ],
[...other stuff..]

  });
};

我的测试文件看起来像这样

describe('gamelabel', function() {
    var $compile;
    var $scope;
    beforeEach(module('GamelabelMod'));
    beforeEach(module('templates'));

    beforeEach(inject(function(_$compile_, _$rootScope_) {
        $compile = _$compile_;
        $rootScope_ = _$rootScope_.$new();      
    }));

    it('should create the title', inject(function($compile, $rootScope) {
        var elm = $compile('<game-label></game-label>')($rootScope);
        $rootScope.$digest();
        console.log(elm);
        expect(elm[0].outerHTML).toContain('div');
    }));
});

现在该指令包含templateUrl

templateUrl: 'directives/gamelabel/gamelabel.dir.html',

这就是我期望在&#34; elm&#34;在测试中。 相反,我只看到

'<game-label class="ng-scope"></game-label>' 

作为编译模板。

我做错了什么?

更新: 我还尝试将模板内联到指令中并且仍然是相同的,因此问题不在于模板路径。

0 个答案:

没有答案