Prueba de unidad de Node.js [cerrado]

Respuestas:

66

Terminé usando la unidad de nodo y estoy muy contento con él.

Originalmente estaba usando Expresso, pero el hecho de que ejecuta pruebas en paralelo causó algunos problemas. (Por ejemplo, el uso de dispositivos de base de datos no funciona bien en esta situación).

malvado
fuente
25
Expresso no te obliga a ejecutar pruebas en paralelo. Aliméntelo con el argumento --serial y los ejecutará a todos en un orden feliz.
einaros
3
Acabo de descargar y usar nodeunit ... hace exactamente lo que dice, ¡funcionó por primera vez!
Michael Dausmann
1
Nodeunit es un poco extraño al requerir que cada prueba llame a .done()mi cuenta.
Kos
2
Si estuviera comenzando un nuevo proyecto ahora, probablemente usaría Mocha como marco de prueba
evilcelery
1
Nodeunit requiere .done()acomodar pruebas asincrónicas. Estoy de acuerdo en que puede ser un poco difícil de manejar a veces, pero tiene una muy buena razón para hacerlo de esta manera.
L0j1k
48

También estaba buscando un marco de prueba decente para el nodo y encontré Mocha . Es el sucesor oficial de Expresso y parece muy maduro.

Permite conectar diferentes bibliotecas de aserciones, ofrece a los reporteros cobertura de código y otras cosas (puede conectar la suya propia). Puede ejecutar sync o async y tiene una API concisa.

Lo intentaré e informaré ...

EDITAR:

Después de una increíble cantidad de tiempo dedicado a otros proyectos, finalmente volví a un proyecto de Javascript y tuve tiempo para jugar con mocha. Puedo recomendar seriamente usarlo. Las pruebas se leen muy bien, la integración con gulp es excelente y las pruebas se ejecutan muy rápido. Pude configurar ejecuciones de pruebas automáticas independientes y en el navegador (browserify) y los informes de cobertura de código correspondientes en aproximadamente medio día (la mayor parte del tiempo dedicado a comprender cómo usar browserify desde el trago). Para mí, el mocha parece una muy buena opción para un marco de prueba.

ACTUALIZAR:

Todavía estoy muy convencido de Mocha. La integración con chai permite agregar diferentes estilos de afirmación. Puede verificar una configuración de trabajo en este proyecto github . Lo estoy usando con karma ahora, integrando el informe de cobertura de código, observadores automáticos y una buena integración con IntelliJ

bennidi
fuente
El enlace del proyecto github está roto. ¿Podrías renovarlo, por favor?
karlisup
1
Comenzando con Mocha - brianstoner.com/blog/testing-in-nodejs-with-mocha
Nicholas Blasgen
15

Personalmente solo he usado el módulo de afirmación, pero también me encuentro con ganas de más. He examinado muchos módulos de nodos y los marcos de prueba de unidades populares son unidad de nodo y deberían (que está hecho por el mismo tipo que Expresso (¿tal vez un nombre actualizado?)

Los votos también parecen prometedores.

jtsao22
fuente
15
Te voté solo por ese juego de palabras.
ThomasReggi
15

Personalmente me he quedado con Expresso , pero hay un montón de marcos diferentes, que se adaptan a la mayoría de los estilos de prueba.

Joyent tiene una extensa lista ; dale una oportunidad.

einaros
fuente
1
Expresso es el único que tiene sentido para mí y funciona correctamente con el código asincrónico. Probé votos y qunit también.
balupton
5

votos es una biblioteca de prueba de unidad sólida para node.js pero la sintaxis es tediosa.

He escrito una fina abstracción llamada votos fluidos que hace que la API sea encadenable.

Y he escrito otra abstracción, [votos-es] que se basa en los votos-fluidos y expone una sintaxis de estilo BDD.

Un ejemplo sería

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Más ejemplos

Raynos
fuente
66
amén a eso, la sintaxis de votos es horrible IMO
Donn Felker
Tuve un juego con los votos con el envoltorio apacible. Parecía una buena idea para probar una json api pero rápidamente se quedó corto. También tiendo a encontrar que las API que están muy orientadas a encadenar llamadas como esta son difíciles de usar y difíciles de depurar. Se ven bien en los ejemplos, pero no funcionan bien con el uso en el mundo real.
drekka
@drekka votos y votos-son horribles. use mocha
Raynos
Intentándolo ahora, pero parece encontrarse con un montón de problemas similares.
drekka
debes estar usándolo mal entonces. intenta leer gist.github.com/2896455 . @drekka
Raynos
1

Si está familiarizado con QUnit , podría usar node-qunit, que es una especie de envoltorio de nodo alrededor del marco existente de QUnit.

Zorayr
fuente
0

Originalmente hecho para node.js, deadunit es una biblioteca de prueba de unidad javascript para node.js y el navegador. Algunos de sus atributos únicos:

  • Curva de aprendizaje fácil
  • Puede generar resultados de prueba en la línea de comando (color o texto sin formato) o como html
  • Imprime las líneas de código reales donde están tus afirmaciones, por lo que tu salida tiene sentido incluso si no pasas mucho tiempo escribiendo comentarios de prueba
  • Tiene una countafirmación simple que facilita el manejo de excepciones esperadas y afirmaciones asincrónicas
  • imprime la excepción y cualquier dato adjunto que tengan
  • le avisará si su código está colgando (algo que no quiere, pero que generalmente pasa desapercibido)
  • Tiene una API controlada por eventos que permite transmitir los resultados de las pruebas a través de una red, o de la forma que desee.
  • Admite pruebas con fibras de nodo
BT
fuente
0

Acabo de subir un proyecto que estoy usando para probar unit nodejs con karma y Jasmine: narma . Sus módulos de nodo se cargan en un navegador de nodo web para que pueda ejecutar módulos de nodo y usar bibliotecas como jquery en el mismo montón.

noamtcohen
fuente
0

estudio de prueba es un paquete npm que proporciona un potente front-end basado en web para pruebas unitarias. Admite cosas como ejecutar pruebas individuales o grupales y pasar al inspector de nodos en pruebas individuales. Actualmente admite mocha y se admitirán más marcos en la demanda futura dada.

Lea más sobre esto aquí .

Descargo de responsabilidad: soy el autor.

Dale Anderson
fuente
1
Parece que esto fue escrito por ti, ¿verdad? Si es así, debe revelar ese hecho en su respuesta.
strugee