使用requireJS进行角度材料设计的angularjs指令的单元测试抛出"GET"错误



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

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

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

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

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

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

我通过使用$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();
}));

你可以完全模拟指令:

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

最新更新