2012-08-02 33 views
21

C'è un posto dove i miei test possono vivere senza essere gestiti da Meteor?Dove dovrebbero essere piazzati i test unitari in Meteor?

Ho appena iniziato il mio primo progetto Meteor e ho iniziato scrivendo i test unitari con Mocha e should.js. Sebbene la mocha funzioni senza problemi, i test impediscono l'avvio di Meteor poiché presenta problemi utilizzando il nodo require anziché __meteor_bootstrap__.require (full error message).

Detto questo, Meteor non dovrebbe eseguire i miei test! In base allo Meteor documentation, il codice può essere inserito solo sul client, sul server o su entrambi. Le suite di test unitarie non appartengono a queste categorie e io sono not the only person confuso dalla mancanza di una posizione ben definita di Meteor per l'esecuzione di test automatici.

In questo momento, i miei test sono tenuti in server/test/, con il contenuto di ciascun file avvolto nel blocco:

if (typeof(Meteor) === 'undefined') { ... } 

Anche se questo funziona, ma non si sente elegante. Hai altri suggerimenti per strutturare i tuoi test con la tua app Meteor?

Aggiornamento: al posto di istruzioni esplicite nei documenti Meteor, ho seguito il Rails folder conventions (4 ° comma), utilizzando una cartella denominata test per memorizzare i miei beni di test. In seguito l'ho spostato su server/test poiché non volevo che fosse caricato sul client.

+0

Questo ha bisogno di aggiornamento. Credo che Meteor Velocity e Jasmine siano una buona scelta ora. –

risposta

18

Inserire i test nella cartella tests/. A differenza di Rails, che utilizza una cartella denominata test per questo scopo, Meteor utilizza il plurale tests per questo nome di cartella.

Le risorse memorizzate in una cartella denominata "test" saranno completamente ignorate da Meteor; queste risorse non verranno caricate sul client o sul server.

Ironia della sorte, sono stato avvisato da qualcuno che ha il opposite issue che vuole caricare i test dal client Meteor.

+1

Mi chiedo se questo comportamento sia documentato da qualche parte. – punund

+5

Questo problema è stato documentato nella sezione ["Strutturare la tua app"] (http://docs.meteor.com/#structuringyourapp) della documentazione ufficiale delle meteoriti. – Blackcoat

2

A partire da 0.6.0, un approccio interessante è quello di utilizzare esclusivamente pacchetti smart locali per la tua app, che possono essere facilmente testati utilizzando il tinytest di Meteor. Avresti il ​​codice minimo che risiede al di fuori dei pacchetti intelligenti per avviare la tua app.

EDIT: Ho seguito questo approccio e non ho nemmeno bisogno di un codice minimo che risieda al di fuori dei pacchetti intelligenti. L'intera app è pacchetti.

1

Inserire i file di test nella cartella tests e si dovrebbe andare bene. Se la tua applicazione è tale da avere più file annidati nella cartella server o client, è possibile replicare la struttura di cartelle simile all'interno della directory tests/client o tests/server. Non è una regola, ma penso che sia di aiuto per la manutenzione e ho avuto esperienza di ore di lavoro a eseguire il debug dell'errore di classe mancante, risolto semplicemente organizzando la struttura dei file nella cartella di test.

1

Poiché questa è una domanda del 2012, e non c'è una risposta esauriente qui, vorrei tentarne uno qui.

Questo è un good starting point per iniziare a pensare di testare il progetto meteorico.

In poche parole Step1: meteora aggiungere Sanjo: gelsomino Step2: meteora aggiungere velocità: html-giornalista

Nel momento in cui si esegue questa operazione, e se l'applicazione è in esecuzione (o ogni volta che si avvia l'applicazione di nuovo in esecuzione), nell'angolo in alto a destra del browser, in cui si apre l'applicazione, viene aperto - si inizia a vedere un punto lampeggiante. Questo è tutto. Ora hai il tuo framework di test in atto.

Ora è possibile anche creare una struttura di directory con l'aiuto di questo framework. Nel momento in cui clicchi su quel punto lampeggiante, vedrai un popup come sotto.

Velocity Test Status

Questo ha collegamenti di convenienza per la generazione di vostra struttura di directory di prova.

In alternativa, è possibile farlo manualmente come di seguito. La prossima cosa è decidere la struttura delle directory. Meteor Documentation says enough about it. You need to have tests folder in your project root.

Prendendo spunto da here, puoi andare così.

<projectRoot> 
|---jasmine 
     |---client 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---client 
      |--- unit 
         |---- my.first.unit.spec.js 
|---jasmine 
     |---server 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---server 
      |--- unit 
         |---- my.first.unit.spec.js 

E Viola, iniziare a scrivere i test di gelsomino. Questi post possono aiutarti ulteriormente.

Problemi correlati