2013-03-27 2 views
21

Quando si esegue il file HTML di SpecRunner viene visualizzato questo errore.ReferenceError: inject non è definito

Guardarsi intorno, questo è dovuto al fatto che angular-mocks.js non viene referenziato. Nel mio caso viene referenziato.

SpecRunner.html:

<link rel="stylesheet" type="text/css" href="lib/jasmine-1.3.1/jasmine.css"> 
    <script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script> 
    <script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script> 
    <script type="text/javascript" src="lib/angular-mocks.js"></script> 

    <!-- include source files here... --> 
    <script type="text/javascript" src="../main/static/js/controllers/norm-definitions-controller.js"></script> 

Quando i test vengono eseguiti, ottengo questa eccezione: ReferenceError: inject is not defined

posso vedere che angular-mocks.js viene fatto riferimento e non è un problema di caching come posso vedere utilizzando Firebug.

Guardando in angular-mocks.js Posso vedere il riferimento completo angular.mock.inject = function() { ... }, ho provato anche questo come riferimento, e ottenere l'eccezione ReferenceError: angular is not defined.

+1

Assicurarsi di non avere dipendenze di script. –

risposta

25

Hai ancora bisogno di angular.js lib. Non l'ho visto tra i tuoi copioni. Dovrebbe essere prima di angular-mock.js.

1

Per gli errori che vengono mentre l'aggiunta di karma e gelsomino per testare il progetto, assicurarsi che

  • tuoi angular.js e angolari-deride js file entrambi hanno le stesse versioni.
  • la versione di gelsomino è compatibile con la versione di angularjs, fare riferimento al sito ufficiale di jasmine per assicurarsi che non vi sia alcun errore di sintassi.
  • fare riferimento alla formazione del test sul sito ufficiale angular js per seguire le metodologie di test dell'unità.

I passaggi sopra riportati consentono di evitare la maggior parte degli errori comuni.