Saltar al contenido

Karma vs marco de prueba Jasmine, Mocha, QUnit

Esta es la contestación más exacta que encomtrarás aportar, pero mírala detenidamente y valora si es compatible a tu proyecto.

Solución:

Karma es un corredor de pruebas de navegador.

La idea es que los navegadores no tengan de forma nativa un concepto de cargar archivos de prueba, ejecutarlos y reportar resultados. Lo que hace el karma es (aproximadamente):

  • iniciar un pequeño servidor web para servir archivos javascript “del lado del cliente” para ser probados (1)
  • también sirve los archivos javascript “del lado del cliente” con las pruebas (o especificaciones, como se les suele llamar) (2)
  • servir una página web personalizada que ejecutará código javascript para las pruebas (3)
  • inicie un navegador para cargar esta página (4)
  • informar los resultados de la prueba al servidor (5)
  • karma puede volver a informar los resultados a archivos de texto, la consola, cualquier cosa que le guste a su servidor CI, etc.

Mirando cada parte:

(1) Esos archivos serán sus archivos js reales; le dirás al karma cómo cargarlos. Si usa requirejs, hay un complemento de karma y se necesita alguna configuración.

(2) Esas pruebas se pueden escribir en una variedad de marcos de pruebas de Javascript (Jasmine, QUnit, Mocha); este es el código JS que se ejecuta en el navegador.

(3) La página web personalizada será un poco diferente para cada marco de prueba; es por eso que karma tiene complementos para diferentes marcos.

(4) Karma puede iniciar la página en muchos navegadores (FF, Chrome o navegadores sin cabeza como PhantomJs).

(5) Informar al karma es, nuevamente, dependiente del marco y se trata de complementos de karma.

Entonces, para responder a sus preguntas:

  • en Java, la mayoría de la gente usa JUnit, que es a la vez un marco para escribir pruebas y ejecutarlas, pero no tiene el problema de diferenciar el entorno en el que se ejecutan las pruebas y en el que se agregan los informes de prueba; karma sería la pieza que faltaba entre un JUnit Suite y un JUnit TestRunner
  • Sí, puedes hacer todo lo que hace el karma “a mano”: elige un marco (jazmín, qunit, moca) y sigue las instrucciones. La ventaja del karma es que proporciona una solución lista para usar, si está en una configuración estándar.
  • Karma se puede usar tanto para pruebas unitarias (con jasmine / qunit / lo que sea) como para pruebas de integración (que usarán otra API, como webdriver, para manejar el navegador)

Una forma más breve de comprender la diferencia:

Es muy probable que las personas que realizan pruebas con Jasmine / Mocha simple estén ejecutando todo el código con la máquina virtual Node.

Agregar Karma a la mezcla (además de su marco de trabajo existente de su elección) ejecutará su conjunto de pruebas con el motor de otros navegadores.

Al hacer esto, obtienes los pequeños extras que obtienes con un entorno de navegador. Será más fácil probar el código relacionado con DOM, pero también cederás a los recursos adicionales proporcionados por el motor de nodo (como el acceso al sistema de archivos / shell)

La tesis del tipo que diseñó Karma fue muy informativa al describir las soluciones existentes y compararlas y, por supuesto, al describir el Karma mismo.

https://github.com/karma-runner/karma/blob/master/thesis.pdf

Resumen: Karma es un corredor de pruebas. Puede ser utilizado por QUnit, Jasmine, Mocha, … Karma tiene ventajas sobre otros corredores de pruebas para mejorar su ciclo de desarrollo TDD / BDD. “Mira” archivos, por lo que cuando guarda un cambio, Karma ejecuta pruebas e informa al instante, sin cambiar el contexto al navegador web para ejecutar la prueba.

En resumen, ¿quizás la pregunta debería ser Karma Y Jasmine o Mocha o QUnit?

Reseñas y valoraciones de la guía

Si entiendes que te ha sido provechoso este artículo, nos gustaría que lo compartas con más seniors y nos ayudes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *