1

我的應用程序使用requirejs以及angularjs。 我正在使用文本!爲了加載我的模板(以免在我的指令中使用templateURL)。它一切正常 - 除非其中一個指令在其模板中包含圖像。單元測試帶有requirejs的角度材料設計的angularjs指令會拋出「GET」錯誤

我現在試圖設置我的測試新指令與他們的模板中的圖標,沒有成功。 舉例來說,我有以下指令模板:

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

噶罵我說:「/android.svg」被調用(已知的「GET」錯誤:意外的要求:GET IMAGEFILEPATH)。

我試圖將我的圖像文件添加到karma配置,但這並沒有解決問題。

除了不使用md圖標之外,還有什麼辦法可以解決這個問題嗎? (當我將m-d圖標更改爲簡單圖像時,它可以工作,所以我猜這個問題是md-icon指令對svg文件使用了一些異步調用,而Karma討厭那個......)。

回答

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

您可以模擬整個指令:

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