使用带有requirejs的angular-material-design进行单元测试angularjs指令会引发“GET”错误

时间:2015-04-22 14:17:00

标签: javascript angularjs requirejs karma-jasmine angular-material

我的应用使用requirejs和angularjs。 我正在使用 text!来加载我的模板(以便在我的指令中不使用templateURL)。一切正常 - 除非其中一个指令在其模板中包含图像。

我现在正尝试在模板中使用图标设置我的测试新指令,但没有成功。 例如,我有以下指令模板:

<buttonDirective>
  <md-icon md-svg-src="/android.svg" alt="android "></md-icon>
</buttonDirective>

Karma对我大喊“正在调用”/android.svg“(已知的”GET“错误:意外请求:GET IMAGEFILEPATH)。

我试图将我的图像文件添加到karma配置中,但这并没有解决问题。

除了不使用md-icon之外还有什么方法吗? (当我将m-d图标更改为简单图像时,它可以正常工作,所以我想问题是md-icon指令正在使用对svg文件的异步调用,而Karma讨厌那个...)。

2 个答案:

答案 0 :(得分:3)

我通过使用$httpBackend模拟请求解决了这个问题:

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

    $httpBackend
        .whenGET('images/ic_forward_24px.svg')
        .respond('');

    $httpBackend
        .whenGET('images/ic_backward_24px.svg')
        .respond('');

    $rootScope.$digest();

}));

答案 1 :(得分:2)

你可以完全嘲笑指令:

module('app', function ($provide) {
    $provide.factory('mdIconDirective', function () {
      return angular.noop;
    });
});