2

私はKarma + JasmineでAngular指示をテストしようとしています。だから私の指示はtemplateUrlkarma-ng-html2js-preprocessorでテンプレートをキャッシュする必要があります。 マイkarma.conf.jsファイル:templateUrlを使用した角度指示のテスト

... 
files: [ 
    ... 
    'static/views/**/*.html', // to match my directive template 
    ... 
], 

preprocessors: { 
    '/static/views/**/*.html': ['ng-html2js] // to catch the filename as specified in templateUrl 
}, 

ngHtml2JsPreprocessor: { 
    moduleName: 'templates' 
} 
... 

そして、私のジャスミン仕様:

describe('Directive unittesting', function() { 
    beforeEach(module('myModule')); 
    beforeEach(module('templates')); 

    var $compile, $scope; 

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

    it('Replaces the element with the appropriate content', function() { 
    var element = $compile("<my-directive></my-directive>")($scope); 
    expect(element.html()).toContain("text to contain"); 
    }); 

}); 

しかし、いくつかの理由のために、それは私のtemplatesモジュールを注入することができないようです:TypeError: undefined is not a function (evaluating '$compile(...を。それらのことを正しく一緒にするにはどうすればいいですか?だから、問題は設定

ngHtml2JsPreprocessor: { 
    prependPrefix: '/', 
    moduleName: 'templates' 
}, 

とプリプロセッサを変更することで解決しました

答えて

2

は実際にあなたのディレクティブで、テンプレートへのパスが正確である必要があり、先頭のスラッシュ

ので
preprocessors: { 
    'static/views/**/*.html': ['ng-html2js'] 
}, 

せずに、実際にありますこのように/statics/views/directives/my-directive.html。 もう1つは、すべてのコンテキストでレンダリングされる指示文に$scope.$digest();を含めることを忘れないことです。

関連する問題