2014-07-14 3 views
5

Sto provando a impostare il test dell'unità con Angular e ho colpito un po 'di un muro con l'iniezione nella configurazione del livello del modulo e nell'esecuzione dei metodi.Come simulare provider/config nella configurazione del modulo per il test dell'unità

Per esempio, se ho una definizione di modulo in quanto tale:

angular.module('foo', ['ngRoute', 'angular-loading-bar', 'ui.bootstrap']).config(function ($routeProvider, $locationProvider, datepickerConfig, datepickerPopupConfig) { 

Karma mi sgrida perché non sono beffardo correttamente $ routeProvider, datepickerConfig, ecc con la seguente:

Error: [$injector:modulerr] Failed to instantiate module foo due to: 
Error: [$injector:unpr] Unknown provider: $routeProvider 

(e quindi se rimuovo $ routeProvider allora dice Provider sconosciuto: datepickerConfig e così via)

Ho anche il seguente codice in un beforeOach:

angular.mock.module('foo'); 
angular.mock.module('ngRoute'); 
angular.mock.module('ui.bootstrap'); 

E la seguente nei miei karma.conf.js:

'components/angular/angular.js', 
    'components/angular/angular-mocks.js', 
    'components/angular/angular-route.js', 
    'components/angular-ui/ui-bootstrap-tpls.js', 
    'app/*.js', // app code 
    'app/**/*.js', 
    'app/**/**/*.js', 
    'test/app/*.js', // app.js 
    'test/specs/*.js', // angular.mock.module calls 
    'test/**/*.js', // tests 
    'test/**/**/*.js' 

Grazie per qualsiasi consiglio.

+0

Hai capito come risolvere questo problema. Come si prende in giro l'ui-router? Si prega di aggiornare la domanda e aggiungere una risposta se è possibile risolverlo. – aksinghdce

risposta

1

Assicurarsi di includere il modulo angular-route e tutte le dipendenze nell'array flies del numero karma.conf.js. Questo dovrebbe fare il trucco.

+0

Ho modificato la domanda di cui sopra - ho incluso quelle nel mio karma.conf.js! –

+1

Solo un sidenote, tutto funziona correttamente quando rimuovo le dipendenze per $ routeProvider, datepickerConfig e datepickerPopupConfig dal mio blocco module.config ma ovviamente non voglio doverlo lasciare in testing. –

0

Ho anche il seguente codice in un beforeEach:

angular.mock.module('foo'); 
angular.mock.module('ngRoute'); 
angular.mock.module('ui.bootstrap'); 

Non credo che è necessario prendere in giro ngRoute e ui.bootstrap

In genere ho appena impostato

describe('myApp', function() { 
    beforeEach(module('foo')); 

    it('should do something awesome', function() { 
    // arrange 
    // act 
    // assert 
    }); 
});