No veo cómo hacer un desarrollo basado en pruebas en meteor.
No veo que se mencione en ninguna parte de la documentación o las preguntas frecuentes. No veo ningún ejemplo ni nada de eso.
Veo que algunos paquetes están usando Tinytest.
Necesitaría una respuesta de los desarrolladores, cuál es la hoja de ruta con respecto a esto. Algo parecido a:
- posible, sin documentación, descúbrelo tú mismo
- meteoro no está construido de una manera que pueda hacer aplicaciones comprobables
- esta es una característica planeada
- etc
Respuestas:
Actualización 3 : a partir de Meteor 1.3, meteor incluye una guía de prueba con instrucciones paso a paso para la unidad, integración, aceptación y prueba de carga.
Actualización 2 : a partir del 9 de noviembre de 2015, Velocity ya no se mantiene . Xolv.io está centrando sus esfuerzos en Chimp , y el Meteor Development Group debe elegir un marco de prueba oficial .
Actualización : Velocity es la solución de prueba oficial de Meteor a partir de 0.8.1.
No se ha escrito mucho sobre las pruebas automatizadas con Meteor en este momento. Espero que la comunidad de Meteor evolucione las mejores prácticas de prueba antes de establecer nada en la documentación oficial. Después de todo, Meteor alcanzó 0.5 esta semana y las cosas todavía están cambiando rápidamente.
La buena noticia: puede utilizar las herramientas de prueba de Node.js con Meteor .
Para mi proyecto Meteor, ejecuto mis pruebas unitarias con Mocha usando Chai para las afirmaciones. Si no necesita el conjunto completo de funciones de Chai, le recomiendo usar should.js en su lugar. Solo tengo pruebas unitarias en este momento, aunque también puedes escribir pruebas de integración con Mocha.
Asegúrese de colocar sus pruebas en la carpeta "tests" para que Meteor no intente ejecutar sus pruebas.
Mocha es compatible con CoffeeScript , mi elección de lenguaje de programación para proyectos Meteor. Aquí hay un ejemplo de Cakefile con tareas para ejecutar sus pruebas de Mocha. Si está utilizando JS con Meteor, no dude en adaptar los comandos para un Makefile.
Sus modelos Meteor necesitarán una pequeña modificación para exponerse a Mocha, y esto requiere cierto conocimiento de cómo funciona Node.js. Piense que cada archivo Node.js se ejecuta dentro de su propio alcance. Meteor expone automáticamente objetos en diferentes archivos entre sí, pero las aplicaciones normales de Node, como Mocha, no hacen esto. Para que nuestros modelos sean probables por Mocha, exporte cada modelo de Meteor con el siguiente patrón CoffeeScript:
... y en la parte superior de su prueba de Mocha, importe el modelo que desea probar:
¡Con eso, puede comenzar a escribir y ejecutar pruebas unitarias con su proyecto Meteor!
fuente
Meteor.whatever
función. Meteor tiene errores indefinidos. ¿Hay alguna manera de requerir que Meteor explícitamente evite esto?Meteor
objeto es inaccesible, al igual que cualquier dependencia del modelo expuesta por Meteor. Mejorar este proceso implicará crear una instancia del entorno de la aplicación dentro de Mocha y exponer elMeteor
objeto a sus pruebas. Me aseguraré de actualizar esta respuesta una vez que tenga una solución de prueba más completa. Mientras tanto, no dude en ponerse en contacto conmigo con cualquier pregunta o sugerencia de mejoras.Hola a todos, checkout laika : todo el nuevo marco de prueba para meteor http://arunoda.github.io/laika/
Puede probar tanto el servidor como el cliente a la vez.
Descargo de responsabilidad: soy el autor de Laika.
fuente
Me doy cuenta de que esta pregunta ya está respondida, pero creo que esto podría usar un poco más de contexto, en forma de una respuesta adicional que proporcione dicho contexto.
He estado haciendo un poco de desarrollo de aplicaciones con meteor, así como el desarrollo de paquetes, tanto implementando un paquete para el núcleo de meteoritos como para la atmósfera .
Parece que su pregunta podría ser en realidad una pregunta dividida en tres partes:
Y también parece que puede haber una pregunta adicional en alguna parte: 4. ¿Cómo se puede implementar la integración continua para 1, 2 y 3?
He estado hablando y comencé a colaborar con Naomi Seyfer (@sixolet) en el equipo del núcleo de meteoritos para ayudar a obtener respuestas definitivas a todas estas preguntas en la documentación.
Había enviado una solicitud de extracción inicial que se dirigía a 1 y 2 al núcleo del meteorito: https://github.com/meteor/meteor/pull/573 .
También había respondido recientemente a esta pregunta: ¿Cómo se ejecutan las pruebas de meteoritos?
Creo que @Blackcoat definitivamente ha respondido 3, arriba.
En cuanto al bono, 4, sugeriría usar circleci.com al menos para hacer una integración continua para sus propias aplicaciones. Actualmente admiten el caso de uso que @Blackcoat había descrito. Tengo un proyecto en el que obtuve con éxito pruebas escritas en coffeescript para ejecutar pruebas unitarias con mocha, más o menos como lo describió @Blackcoat.
Para una integración continua en el núcleo de meteoritos y los paquetes inteligentes, Naomi Seyfer y yo estamos charlando con el fundador de circleci para ver si podemos implementar algo increíble en el corto plazo.
fuente
RTD ahora ha sido obsoleto y reemplazado por Velocity, que es el marco de prueba oficial para Meteor 1.0. La documentación es todavía relativamente nueva ya que Velocity está en un gran desarrollo. Puede encontrar más información sobre el repositorio de Velocity Github , la página de inicio de Velocity y el Manual de prueba de meteoritos (contenido pago)
Descargo de responsabilidad: soy uno de los miembros del equipo principal de Velocity y el autor del libro.
Echa un vistazo a la IDT, un marco de análisis completo para Meteor aquí rtd.xolv.io . Es compatible con Jasmine / Mocha / custom y funciona tanto con JS simple como con café. También incluye cobertura de prueba que combina la cobertura de unidad / servidor / cliente.
Y un proyecto de ejemplo aquí
Un blog para explicar las pruebas unitarias con Meteor aquí
Un enfoque de prueba de aceptación e2e usando Selenium WebdriverJS y Meteor aquí
Espero que ayude. Descargo de responsabilidad: soy el autor de RTD.
fuente
Usé mucho esta página y probé todas las respuestas, pero desde el punto de partida de mi principiante, las encontré bastante confusas. Una vez que tuve algún problema, me quedé desconcertado sobre cómo solucionarlo.
Esta solución es realmente simple para comenzar, si aún no está completamente documentada, por lo que la recomiendo para personas como yo que quieren hacer TDD pero no están seguras de cómo funcionan las pruebas en JavaScript y qué bibliotecas se conectan a qué:
https://github.com/mad-eye/meteor-mocha-web
Para su información, descubrí que también necesito usar el paquete Atmosphere del enrutador para hacer una ruta '/ tests' para ejecutar y mostrar los resultados de las pruebas, ya que no quería que saturara mi aplicación cada vez que se carga.
fuente
meteor-mocha-web
conmocha-phantomjs
para automatizar las pruebas y para CI. Es lo que usamos. Divulgación completa: soy uno de los mantenedores demeteor-mocha-web
.Sobre el uso de tinytest, es posible que desee echar un vistazo a esos recursos útiles:
Los conceptos básicos se explican en este screencast: https://www.eventedmind.com/feed/meteor-testing-packages-with-tinytest
Una vez que haya entendido la idea, querrá la documentación de la API pública para
tinytest
. Por ahora, la única documentación para eso está al final de la fuente deltinytest
paquete: https://github.com/meteor/meteor/tree/devel/packages/tinytestAdemás, el screencast habla
test-helpers
, es posible que desee echar un vistazo a todos los ayudantes disponibles aquí: https://github.com/meteor/meteor/tree/devel/packages/test-helpers A menudo hay alguna documentación dentro de cada uno expedienteProfundizar en las pruebas existentes de los paquetes de meteoritos proporcionará muchos ejemplos. Una forma de hacer esto es realizar una búsqueda
Tinytest.
otest.
en el directorio del paquete del código fuente de meteorfuente
Las pruebas se convierten en una parte fundamental de Meteor en la próxima versión 1.3. La solución inicial se basa en Mocha y Chai.
Las discusiones originales sobre el diseño mínimo viable se pueden encontrar aquí y los detalles de la primera implementación se pueden encontrar aquí .
MDG ha producido los huesos iniciales de la documentación de la guía para las pruebas que se pueden encontrar aquí , y hay algunas pruebas de ejemplo aquí .
Este es un ejemplo de una prueba de publicación del enlace anterior:
fuente
Estoy haciendo pruebas funcionales / de integración con Meteor + Mocha en el navegador. Tengo algo parecido a lo siguiente (en coffeescript para una mejor legibilidad):
En el cliente ...
... y en el servidor:
Por supuesto, puede realizar las pruebas unitarias del lado del cliente de la misma manera. Sin embargo, para las pruebas de integración es bueno tener toda la infraestructura de Meteor.
fuente
Como dijo Blackcout, Velocity es el marco TDD oficial para Meteor. Pero en este momento la página web de velocity no ofrece una buena documentación. Así que te recomiendo que mires:
fuente
Otra opción, que está fácilmente disponible desde 0.6.0, es ejecutar toda la aplicación a partir de paquetes inteligentes locales, con una cantidad mínima de código fuera de los paquetes para iniciar su aplicación (posiblemente invocando un paquete inteligente particular que es la base de su aplicación).
A continuación, puede aprovechar Tinytest de Meteor, que es ideal para probar aplicaciones de Meteor.
fuente
He estado usando xolvio: pepino y velocidad con éxito para hacer mis pruebas. Funciona muy bien y se ejecuta de forma continua, por lo que siempre puede ver que sus pruebas están pasando.
fuente
Meteoro + TheIntern
De alguna manera logré probar la aplicación Meteor con TheIntern.js.
Aunque es según mi necesidad. Pero todavía creo que puede llevar a alguien en la dirección correcta y estoy compartiendo lo que he hecho para resolver este problema.
Hay una
execute
función que nos permite ejecutar código JS a través del cual podemos acceder alwindow
objeto del navegador y, por lo tanto,Meteor
también.Quiere saber más sobre ejecutar
Así es como se
test suite
ve mi para las pruebas funcionalesPara saber más, esta es mi esencia.
Nota: todavía estoy en una fase muy temprana con esta solución. No sé si puedo hacer pruebas complejas con esto o no. Pero estoy bastante seguro de ello.
fuente
La velocidad aún no está madura. Estoy enfrentando problemas de setTimeout para usar la velocidad. Para las pruebas unitarias del lado del servidor, puede utilizar este paquete .
Es más rápido que la velocidad. La velocidad requiere mucho tiempo cuando pruebo cualquier especificación con un inicio de sesión. Con el código Jasmine podemos probar cualquier método y publicación del lado del servidor.
fuente