2012-10-03 14 views
5

Sto provando a scrivere test unitari per un progetto AngularJS. Il progetto si basa su angular-seed e utilizza Testacular per eseguire test. Ogni tentativo di eseguire script test.sh finisce sempre con "Eseguito 0 di 0 SUCCESSO".Test di unità AngularJS + Testacular/Jasmine: Eseguito 0 di 0 SUCCESSO

Ho provato questo super-semplice "test":

describe('Testing Jasmine', function() { 
    console.log('describe'); 
    var test = 'test'; 

    it('should be test', function() { 
    console.log('it'); 
    expect(test).toEqual('test'); 
    }); 
}); 

Il risultato è che solo 'descrivere' viene registrato, il 'si' parte è saltato. Quando provo la stessa cosa sul clone di seme angolare pulito tutto funziona, quindi presumo che il sistema di test stesso con Testacular e Jasmine funzioni correttamente. Il nostro progetto è basato su Rails, ma il clean angular-seed che stavo testando per il confronto è in esecuzione su Apache quindi ho pensato che questa potesse essere la differenza - percorsi incasinati o qualcosa in quel progetto Rails.

Ma non ci sono messaggi di errore, test di e2e funzionano ... e suppongo anche che se alcuni file mancassero o che i percorsi non fossero corretti non sarebbe in grado di effettuare il log che 'descriva' nei test - se ho capito bene questo significa che Jasmine sta elaborando il file giusto (non ci sono altre dipendenze in questo pseudo-test). Com'è possibile che la parte 'descrive' funzioni alla perfezione e solo la parte 'essa' sembra essere saltata?

Qualsiasi suggerimento o aiuto sarebbe apprezzato.

+0

Si sta tentando di riutilizzare la stessa configurazione per entrambi i test e2e e unit test? In tal caso, creare una configurazione separata per e2e e unit test. Questo è esattamente il modo in cui è descritto nel tutorial angular-phonecat. Controlla https://github.com/vojtajina/testacular/issues/66 – Vojta

risposta

1

Controllare l'ordine dei file Javascript.

Un problema simile è stato riportato in Testacular e reordering the js files fixed the problem.

+0

Non sono sicuro del motivo per cui questa risposta è stata downvoted. Ho avuto esattamente gli stessi sintomi e sono stato in grado di risolverlo osservando l'ordine di caricamento dei file javascript (nel mio file di configurazione testacular) – user35559

+0

Link è marcito. – ReactiveRaven

2

test e2e in testacular ha una lunga strada da percorrere. Ho lottato con questo per un po '. Risulta che il lato sinistro di un'aspettativa deve essere uno dei metodi definiti nella documentazione angolare: http://docs.angularjs.org/guide/dev_guide.e2e-testing.

il seguente è un esempio

describe('Testing Jasmine', function() { 

    it('should be test', function() { 
    expect(element('foo').count()).toEqual(1); 
    }); 

}); 

Ricordate, se non si entra in una delle forme prescritte chiama nella aspettarsi, testacular non eseguirà il 'si'

1

anche fare in modo che si avere uno di questi attributi utilizzati sulla pagina che si sta testando:

'ng:app', 'ng-app', 'x-ng-app', 'data-ng-app' 

Perché se la funzione angularInit() non troverà elemento con uno di questi argomenti RUNNER vinto' t iniziare.

Questo è particolarmente importante se si desidera utilizzare il test runner angolare su Webage che non ha ng-app - con la versione corrente non funzionerà.

6

Se si eseguono test di unità, non includere il file angular-scenario.js nel file di configurazione testacular. Ciò interromperà i test unitari.

+0

Bingo. Il repository di angular-seed include 'app/lib/angular/angular - *. Js' in testacular.conf.js - e la rimozione di quella linea risolve il mio problema. – arthurakay

+0

oppure aggiungere: exclude = ['assets/js/lib/angular-scenario.js']; – vladexologija

Problemi correlati