2012-06-07 29 views
8

Qual è il modo migliore per eseguire il reporter HTML di jasmine con codice in stile browserify? Voglio anche essere in grado di eseguire questo headless con phantomjs, quindi la necessità del reporter HTML.Come test unitario con jasmine e browserify?

risposta

4

Non penso che ci sia ancora un pacchetto jasmine-browserify, e in realtà non combacia con il modo in cui Browserify/NPM fa le cose (evita le esportazioni globali).

Per ora, ho solo includono /node_modules/jasmine-reporters/ext/jasmine.js e jasmine-html.js in cima alla mia <head>, e richiedono tutte le mie specifiche in un livello superiore spec_entry.js che poi utilizzare come punto di ingresso per un bundle Browserify che ho messo subito dopo in <head>. (Si noti che se il punto di ingresso non è di primo livello, si avrà un brutto periodo a causa di un bug di lunga durata, gnarly in Browserify).

Questo funziona bene con jasmine-node finché non si presuppone la presenza di un numero globale document o window. Tuttavia, è necessario ricordare di registrare le proprie specifiche in tale spec_entry.js, a meno che non si voglia hackerare Browserify per ottenere la ricerca delle proprie directory per i file .spec.js.

Sarei molto interessato a una soluzione più elegante, che funzionerebbe in modo trasparente con jasmine-node e browserify.

+3

Ciao, molto tardi alla festa ma se è ancora utile per te, controlla la mia risposta o https://github.com/amitayd/grunt-browserify-jasmine-node-example –

8

Ho creato un progetto di esempio dettagliato che risolve il test del gelsomino (e altri) - vedere https://github.com/amitayd/grunt-browserify-jasmine-node-example. Discussione allo my blog post

L'approccio in questo aspetto è stato quello di creare un pacchetto Browserify per il codice sorgente principale (in cui sono esposti tutti i moduli) e uno per i test che si basa su esterno per il codice sorgente principale. Quindi i test possono essere eseguiti sia su PhantomJS che su un browser reale.

4

Se si utilizza grunt-watchify, non è necessario creare spec_entry.js. Basta usare richiedono nelle vostre specifiche, e poi raggruppare le caratteristiche del tuo con grugnito-watchify:

watchify: { 
     test: { 
      src: './spec/**/*Spec.js', 
      dest: 'spec/spec-bundle.js' 
     } 
    }, 
    jasmine: { 
     test: { 
      options: { 
       specs: 'spec/spec-bundle.js' 
      } 
     } 
    }, 

quindi eseguire il test con

grunt.registerTask('test', ['watchify:test','jasmine:test']); 
0

Si potrebbe anche voler guardare in Karma. È davvero semplice da configurare e controllerà le modifiche e rieseguirà il test. Dai un'occhiata a questo esempio di progetto che usa Karma per testare un progetto di tipo browserify/react. Hai solo bisogno di aggiungere alcune dipendenze e creare un file karma.conf.js.

https://github.com/TYRONEMICHAEL/react-component-boilerplate

1

Come tutte le risposte di cui sopra sono po 'datato (ovviamente non significa che essi non funzionano più, ecc) vorrei puntare a https://github.com/nikku/karma-browserify questo è un preprocessore per il karma corridore. Combina i file di test con tutte le dipendenze richieste. Tale bundle di browserify creato viene passato al karma che, in base alla configurazione, lo esegue. Si prega di essere consapevoli che è possibile scegliere qualsiasi moderno quadro di prova (jasmin, moka ...) e browser (phantom, chrome ..) Probabilmente questo è esattamente quello che ti serve :)