2016-02-26 15 views
7

Ho 2 file di test in ./test.Come posso includere test Moka e Karma (lato server e lato client) nella stessa base di codice/package.json?

Diciamo che test1.js è un test di Mocha che fa girare un server ed esegue varie richieste contro gli URI per determinare che si comportano tutti come previsto.

test2.js è un test che utilizza Mocha Karma per caricare script specifici (tra cui angular-mocks.js) ed eseguire in pochi browser per garantire tutte le funzionalità si comporta come previsto.

In package.json mi hanno la proprietà test configurato come tale:

"scripts": { 
    "test": "./node_modules/.bin/mocha --reporter spec -t 5000" 
}, 

fredda, posso npm test dalla riga di comando per eseguire Mocha. Ma oh noes - Mocha esegue entrambi i miei script, e lo test2.js ovviamente blocca tutto, dal momento che la logica in esso presente presuppone che funzioni nel contesto del Karma (scusatemi se non lo descrivo correttamente).

ho potuto avere 2 cartelle di prova, test e test-ng o qualcosa del genere, ma penso che in ultima analisi, voglio essere in grado di npm test e hanno diversi set di test eseguiti, vale a dire:

"./node_modules/.bin/mocha --reporter spec -t 5000" 
"./node_modules/.bin/karma start" 

e configurarli a ciascuno eseguire i file js corretti. Sto cercando come un matto per trovare un esempio in cui test sul lato client e sul lato server esistono nello stesso repository, ma sto solo trovando tutorial e post di blog e simili per dimostrare uno o l'altro. Qualcuno può aiutarmi nella giusta direzione?

Modifica: Devo pensare/organizzare i miei test in questo modo?

./tests/server/**.js 
./tests/e2e/**.js 
./tests/unit/**.js 

stavo forse facendo ipotesi basate sul fatto che NPM di default utilizza la cartella ./test/.

Edit 2: Ora sto facendo quello che ho descritto sopra, più o meno, e sono i miei test descritto nel readme del pronti contro termine come:

test di unità angolari possono essere eseguiti tramite Karma: ./node_modules/.bin/karma start karma.conf.js

angolare end-to-end test possono essere eseguiti mediante goniometro: ./node_modules/.bin/protractor protractor.conf.js

unit test Express possono essere eseguite tramite Mocha: ./node_modules/.bin/mocha ...

Quindi ora non sto usando lo npm test e mi chiedo quali vantaggi ci siano nell'utilizzarlo.

+0

Chi ha votato per chiudere, direi che questo non è affatto basato sull'opinione pubblica. Potrei rinominare il titolo della domanda in "Come si possono avere 2 set di test diversi in una direttiva di script npm", ma ciò non sarebbe così esplicativo. –

+0

Puoi configurare i tuoi file di inclusione/esclusione nella [mocha] (http://attester.ariatemplates.com/usage/configuration.html#tests) e [Karma] (http://karma-runner.github.io/ Config 0.13/config/configuration-file.html)? –

risposta

4

Si può mettere qualcosa di simile nel tuo package.json:

"scripts": { 
    "unittest": "mocha --reporter spec tests/test1.js", 
    "browsertest": "mocha --reporter spec -t 5000 tests/test2.js", 
    "test": "npm run unittest && npm run browsertest" 
} 

e hanno Mocha (o Karma, ecc) hanno uno script ciascuno, che può essere eseguito individualmente da esempio.

$ npm run browsertest 

Ci sono diversi vantaggi per mettere tutte le parti del sistema di generazione direttamente negli script in package.json:

  • È possibile evitare l'installazione dei pacchetti NPM a livello globale o utilizzare incantesimi come ./node_modules/.bin/mocha, perché NPM sa già di ./node_modules/.bin.
  • mettere tutto in script NPM rende facile per aumentare le operazioni NPM serie (start, stop, test, etc.), che a sua volta rende più facile collaborare con gli altri, persone, nonché quadri (come Phusion Passenger) .
  • non hai bisogno di Grunt, Gulp, ecc

ed è possibile utilizzare npm run per ottenere una lista degli script.

Per una descrizione più approfondita dei vantaggi, vedere di Keith Cirkel great blog post.

+0

Argh, mi sono perso completamente: '▶ npm run -h; npm run-script [- ] '. Grazie per la condivisione. Ti dispiacerebbe elaborare dei benefici per includere i comandi in 'scripts'? È solo per salvare i comandi da dover essere digitati? –

+0

Grazie per i dettagli su 'npm run', ecc. Buona giornata :) –

Problemi correlati