2016-03-24 13 views
1

Ich versuche, einen Interzeptor mit Karma und Jasmin zu testen, aber mit unerwarteten Fehlern. Ich wurde im Anschluss an diesen Code: http://jbavari.github.io/blog/2014/06/20/testing-interceptor-headers-in-angularjs/Angular Karma Jasmin forEach @ Fehler

Code:

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

Test:

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

In Karma conf alle benötigten Dateien geladen werden, aber ich bin immer diesen unbekannten Fehler:

/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 

Irgendeine Idee?

+0

Ich habe festgestellt, dass, wenn ich ein nicht existierendes Modul in der Abhängigkeitenliste von 'xos.helpers' hinzufüge, der Fehler gleich bleibt ... normalerweise ist es so etwas wie:' NoMod .... ' – teone

+0

Ich gebe zu Ich bin kein Experte hier, aber in meinen Tests benutze ich eckigen Injektor: beforeEach (angular.mock.inject (Funktion (\ _ SetCSRFToken \ _) ... (etwas zu versuchen, zumindest). – DavidA

Antwort

3

Ok, das Problem gefunden.

Ich injiziere nicht ngResource Modul in xos.helpers Modul. Hinzufügen Chrome zusammen mit PhantomJs in Karma browsers Abschnitt drucken einen aussagekräftigen Fehler, der mich leiten.

0

Sie benötigen injizieren, um die Winkel Dienste und Anbieter zu erhalten, versuchen Sie dies:

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

Bereits versucht .. Derselbe Fehler ... Ich vermute, dass etwas in der Konfiguration nicht stimmt, aber dieser Fehler ist ein wenig unklar ... – teone

Verwandte Themen