2012-03-01 16 views
5

Dato: codice javascript lato client (eseguito nel browser, utilizza jquery, ecc.). Attualmente il codice è testato con Rhino e envjs. Vorremmo passare a node.js. Tuttavia, dopo alcune ricerche, non è stato possibile trovare alcun supplemento simile a envjs che emuli un browser.Test del codice javascript lato client con Jasmine e node.js

Durante l'esecuzione di node.js "come è", anche le funzionalità di base come alert() o window sono mancanti.

Esiste un pacchetto standard, simile a Rhino & envjs per node.js, per favore?

+0

Questa è una parte molto sottosviluppato di software. Mi ha preso per sempre per trovare un modo per eseguire anche i miei test JS con i miei altri test in Visual Studio. – Zoidberg

risposta

9

È possibile utilizzare zombie.js, che dispone di tutto il necessario per il test. Oppure puoi sfruttare jsdom (che zombie.js utilizza internamente) per ottenere un DOM in node.js ed eseguire i test su quel DOM.

Posso anche consigliare testling, che esegue i test in base alle specifiche in tutti i browser comuni: il codice è in esecuzione nei browser effettivi rispetto al servizio.

Ecco un semplice esempio con jsdom:

var jsdom = require("jsdom"); 

jsdom.env(url, ["http://code.jquery.com/jquery.min.js"], function(err, window) { 
    // jQuery is at window.$ 
}); 

Invece di url sopra, si potrebbe avere un documento HTML, o un frammento.

è anche possibile caricare una pagina a prendere eventuali risorse esterne, invece di fornire jQuery ecc direttamente ad jsdom:

var jsdom = require("jsdom").jsdom, 
    doc = jsdom(markup), 
    window = doc.createWindow(); 

// Do your stuff on window, jsdom will have fetched all the scripts referenced in the markup 

Anche in questo caso, zombie.js utilizza jsdom internamente che potrebbe essere un punto di partenza migliore.

+0

Qual è il tuo consumo di minuti di testling come? Sono sempre preoccupato di eseguire i miei test "troppo" e di consumare "troppi" minuti. – Raynos

+0

Raynos: In realtà l'ho appena provato. Sono sull'orlo del lancio e non appena il business decolla, sono abbastanza sicuro che il testling valga i costi, dato che odio i test manuali del browser. :-) –

2

ci sono due opzioni per questa

  1. Il codice del browser di test. Eseguilo nel browser. Emulare il browser non prova affatto che il tuo codice funzioni.
  2. utilizzare uno strumento come phantom/zombie

Naturalmente ci sono alternative a questo, è possibile estrarre qualsiasi non-navigatore codice relativo, scrivere un suite di test di unità per loro ed eseguirlo nel nodo. È solo JavaScript.

È inoltre possibile utilizzare servizi gestiti come testling per eseguire i test del browser per voi

Problemi correlati