2012-08-02 18 views
21

¿Hay algún lugar donde mis pruebas puedan vivir sin Meteor?¿Dónde deberían colocarse las pruebas unitarias en Meteor?

Acabo de comenzar mi primer proyecto Meteor y comencé escribiendo pruebas unitarias con Mocha y should.js. Aunque mocha se ejecuta sin problemas, las pruebas impiden que Meteor se inicie ya que tiene problemas al usar el nodo require en lugar de __meteor_bootstrap__.require (full error message).

Una vez dicho esto, Meteor no debería ejecutar mis pruebas. De acuerdo con Meteor documentation, el código solo se puede colocar en el cliente, servidor o ambos. Las suites de pruebas unitarias no pertenecen a estas categorías, y estoy not the only person confundido por la falta de una ubicación bien definida para realizar pruebas automatizadas de Meteor.

En este momento, mis pruebas se mantienen en server/test/, con el contenido de cada archivo envuelto en el bloque:

if (typeof(Meteor) === 'undefined') { ... } 

Aunque esto funciona, no se siente elegante. ¿Tiene alguna otra sugerencia para estructurar sus pruebas con su aplicación Meteor?

Actualización: en lugar de instrucciones explícitas en los documentos de meteoros, que siguió a la Rails folder conventions (cuarto párrafo), usando una carpeta llamada test para almacenar mis activos de prueba. Más tarde moví esto a server/test ya que no quería que se cargara en el cliente.

+0

Esto requiere de actualización. Creo que con Meteor Velocity y Jasmine son una buena opción ahora. –

Respuesta

18

Coloque sus pruebas en la carpeta tests/. A diferencia de Rails, que usa una carpeta llamada test para este propósito, Meteor usa el plural tests para este nombre de carpeta.

Los elementos almacenados en una carpeta llamada "pruebas" serán completamente ignorados por Meteor; estos activos no se cargarán en el cliente o servidor.

Irónicamente, alguien me dijo que tenía el opposite issue que quiere que sus pruebas sean cargadas por el cliente Meteor.

+1

Me pregunto si este comportamiento está documentado en alguna parte. – punund

+5

Este problema ya se documentó en la sección ["Estructurar su aplicación"] (http://docs.meteor.com/#structuringyourapp) de la documentación oficial de meteoritos. – Blackcoat

2

A partir de 0.6.0, un enfoque interesante es utilizar exclusivamente paquetes inteligentes locales para su aplicación, que pueden ser probados fácilmente utilizando la prueba más pequeña de Meteor. Tendría el código mínimo simple que reside fuera de los paquetes inteligentes para iniciar su aplicación.

EDIT: He hecho este enfoque, y ni siquiera necesito un código mínimo que resida fuera de los paquetes inteligentes. Toda la aplicación es paquetes.

1

Coloque sus archivos de prueba en la carpeta tests y debería estar bien. Si su aplicación es tal que tiene múltiples archivos anidados en la carpeta server o client, puede replicar una estructura de carpetas similar dentro de su directorio tests/client o tests/server. No es una regla, pero creo que ayuda para el mantenimiento y he tenido la experiencia de pasar horas depurando el error de clase faltante que simplemente se resolvió organizando la estructura del archivo en la carpeta de prueba.

1

Dado que esta es una pregunta de 2012, y no hay una sola respuesta integral aquí, me gustaría intentar una aquí.

Esto es good starting point para empezar a pensar en probar su proyecto de meteorito.

En pocas palabras Paso 1: meteoro añadir Sanjo: jazmín Paso 2: meteoro añadir velocidad: html-reportero

el momento en que lo hace, y si se ejecuta la aplicación (o cada vez que inicie su aplicación posterior ejecución), en la esquina superior derecha del navegador, donde se abre la aplicación, comenzará a ver un punto parpadeante. Eso es. Ahora tiene su marco de prueba en su lugar.

Ahora puedes crear una estructura de directorios con la ayuda de este framework también. En el momento en que haga clic en ese punto parpadeante, verá una ventana emergente como la siguiente.

Velocity Test Status

Esto tiene enlaces de conveniencia para la generación de la estructura de directorios de prueba.

Como alternativa, puede hacerlo manualmente como se indica a continuación. Lo siguiente es decidir sobre la estructura del directorio. Meteor Documentation says enough about it. You need to have tests folder in your project root.

Tomando la señal desde here, puede seguir así.

<projectRoot> 
|---jasmine 
     |---client 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---client 
      |--- unit 
         |---- my.first.unit.spec.js 
|---jasmine 
     |---server 
      |--- integration 
         |---- my.first.integration.spec.js 
     |---server 
      |--- unit 
         |---- my.first.unit.spec.js 

Y Viola, comienza a escribir tus pruebas de jazmín. Estas publicaciones pueden ayudarte aún más.

Cuestiones relacionadas