2016-03-24 25 views
1

私はカルマとジャスミンで迎撃器をテストしようとしていますが、予期しないエラーがあります。 http://jbavari.github.io/blog/2014/06/20/testing-interceptor-headers-in-angularjs/角度カルマジャスミンforEach @エラー

コード:

angular 
    .module('xos.helpers',[ 
     'ngCookies', 
     'xos.xos', 
     'xos.hpcapi', 
     'xos.xoslib', 
     'bugSnag' 
    ]) 
    .config(config); 

function config($httpProvider, $resourceProvider) { 
    console.log('xos.helpers config') 
    $httpProvider.interceptors.push('SetCSRFToken'); 

    $interpolateProvider.startSymbol('{$'); 
    $interpolateProvider.endSymbol('$}'); 

    // NOTE http://www.masnun.com/2013/09/18/django-rest-framework-angularjs-resource-trailing-slash-problem.html 
    $resourceProvider.defaults.stripTrailingSlashes = false; 
} 

テスト:私はこのコードに続くたカルマのconfで

'use strict'; 
    describe('The xos.helper module', function(){ 
     var SetCSRFToken, httpProviderObj; 

     beforeEach(module('xos.helpers')); 

     beforeEach(module(function(_$httpProvider_){ 
     httpProviderObj = _$httpProvider_; 
     })); 

     beforeEach(inject(function(_SetCSRFToken_){ 
     SetCSRFToken = _SetCSRFToken_; 
     })); 

     it('should exist',() => { 
     expect(SetCSRFToken).toBeDefined(); 
     }); 

     it('should set SetCSRFToken interceptor',() => { 
     expect(httpProviderObj).toBeDefined(); 
     expect(httpProviderObj.interceptors).toContain('SetCSRFToken'); 
     }); 
}); 

必要なすべてのファイルがロードされているのが、私はこの未知のエラーを取得しています:

/Users/teone/Sites/xos/views/ngXosLib/bower_components/angular/angular.js:4414:53 
[email protected]/Users/teone/Sites/xos/views/ngXosLib/bower_components/angular/angular.js:336:24 
[email protected]/Users/teone/Sites/xos/views/ngXosLib/bower_components/angular/angular.js:4374:12 
[email protected]/Users/teone/Sites/xos/views/ngXosLib/bower_components/angular/angular.js:4299:22 
[email protected]/Users/teone/Sites/xos/views/ngXosLib/bower_components/angular-mocks/angular-mocks.js:2427:60 
Expected undefined to be defined. 
/Users/teone/Sites/xos/views/ngXosLib/xosHelpers/spec/csrftoken.test.js:17:37 

ご存知ですか?

+0

'xos.helpers'の依存関係リストに存在しないモジュールを追加すると、エラーは同じままです...通常は' NoMod .... 'のようになります – teone

+0

私は認めます私はここでは専門家ではありませんが、私のテストでは、角度のモックインジェクタを使用しています:beforeEach(angular.mock.inject(function(\ _ SetCSRFToken \ _)...(少なくとも試してみてください) – DavidA

答えて

3

OK]をクリックして、問題を発見しました。

ngResourceモジュールをxos.helpersモジュールに注入していませんでした。 ChromePhantomJsと一緒にカルマbrowsersに追加すると、私を誘導する意味のあるエラーが表示されます。

0

あなたが角度のサービスとプロバイダを取得するために注入使う必要がある、これを試してみてください。

describe('The xos.helper module', function(){ 
     var SetCSRFToken, httpProviderObj; 

     beforeEach(module('xos.helpers')); 

     //Instead 'module' use 'inject' 
     beforeEach(inject(function($httpProvider){ 
     httpProviderObj = $httpProvider; 
     })); 

     beforeEach(inject(function(_SetCSRFToken_){ 
     SetCSRFToken = _SetCSRFToken_; 
     })); 

     it('should exist',() => { 
     expect(SetCSRFToken).toBeDefined(); 
     }); 

     it('should set SetCSRFToken interceptor',() => { 
     expect(httpProviderObj).toBeDefined(); 
     expect(httpProviderObj.interceptors).toContain('SetCSRFToken'); 
     }); 
}); 
+0

既に試してみました..同じエラー...私は構成に何か間違っていると思いますが、そのエラーは少し不明です... – teone