2012-03-01 10 views
5

Dado: código javascript del lado del cliente (se ejecuta en el navegador, usa jquery, etc.). Actualmente el código se prueba con Rhino y envjs. Nos gustaría cambiar a node.js. Sin embargo, después de algunas investigaciones, no se pudo encontrar ningún envjs -como complemento que emule un navegador.Prueba del código javascript del lado del cliente con Jasmine y node.js

Mientras se ejecuta node.js "como está", incluso capacidades básicas como alert() o window faltan.

¿Hay algún paquete estándar similar a Rhino & envjs para node.js, por favor?

+0

Esta es una parte muy subdesarrollada de software. Me llevó una eternidad para encontrar una manera de incluso ejecutar mis pruebas JS con mis otras pruebas en Visual Studio. – Zoidberg

Respuesta

9

Puede usar zombie.js, que tiene todo lo que necesita para probar. O puede aprovechar jsdom (que usa zombie.js internamente) para obtener un DOM en node.js y ejecutar sus pruebas contra ese DOM.

También puedo recomendar testling, que ejecuta pruebas de acuerdo con sus especificaciones en todos los navegadores comunes: el código se ejecuta en navegadores reales contra su servicio.

Aquí hay un ejemplo simple con jsdom:

var jsdom = require("jsdom"); 

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

En lugar de url anterior, podría tener un documento HTML, o fragmento.

También puede cargar una página a buscar a los recursos externos, en lugar de proporcionar jQuery etc directamente a 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 

Una vez más, utiliza zombie.js jsdom internamente y podría ser un mejor punto de partida.

+0

¿Cuál es su consumo de minutos de testling? Siempre me preocupa que haga demasiado "pruebas" y consuma "demasiados" minutos. – Raynos

+0

Raynos: En realidad, ya lo probé. Estoy a punto de lanzar y tan pronto como despegue el negocio, estoy bastante seguro de que la prueba valdrá la pena, ya que odio las pruebas manuales del navegador. :-) –

2

Hay dos opciones para este

  1. Su código del navegador de pruebas. Ejecútelo en el navegador. Emular el navegador no prueba que tu código funcione, en absoluto.
  2. utilizar una herramienta como phantom/zombie

Por supuesto que hay alternativas a este, puede extraer cualquier no-navegador código relacionado, escribe un conjunto de pruebas de unidad para ellos y ejecutarlo en el nodo. Es solo JavaScript.

También puede utilizar los servicios gestionados como testling a ejecutar las pruebas del navegador para que

Cuestiones relacionadas