2016-03-24 21 views
1

Karma ve Jasmine ile bir ara kesmeyi test etmeye çalışıyorum ama beklenmedik hatalar yaşıyorum. Bu kodu takip ediyordu: http://jbavari.github.io/blog/2014/06/20/testing-interceptor-headers-in-angularjs/Açısal Karma Yasemin forEach @ Hata

Kodu:

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; 
} 

Testi: karma conf olarak

'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'); 
     }); 
}); 

gerekli tüm dosyalar yüklenir ama bu bilinmeyen hatayı alıyorum:

/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 

Herhangi bir fikrin var mı?

+0

"xos.helpers" bağımlılıkları listesinde varolan bir modülü eklerseniz hatanın aynı kaldığını fark ettim ... normalde şöyle bir şey var: "NoMod ...." – teone

+0

Kabul ediyorum Burada uzman değilim, ama testlerimde açısal majör enjektörünü kullanıyorum: beforeEach (angular.mock.inject (işlev (\ _ SetCSRFToken \ _) ... (en azından denemek için bir şey) ... – DavidA

cevap

3

Tamam sorunu buldum.

xos.helpers modülünde ngResource modülünü enjekte etmedim. ve PhantomJs ile karma browsers bölümünün eklenmesi, bana rehberlik eden anlamlı bir hata yazdırır.

0

Sen açısal hizmetler ve sağlayıcıları olsun için enjekte kullanmak gerek, şunu deneyin:

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

Zaten denedim .. Aynı hata ... Yapılandırmada yanlış bir şey var sanırım ama bu hata biraz belirsiz ... – teone