¿Cómo puedo usar efectivamente Jasmine para probar los activos de JavaScript empaquetados a través de JAMMIT?

StackOverflow https://stackoverflow.com/questions/5833929

Pregunta

Tengo una aplicación Rails que combina activos de JavaScript usando Jammit, y me gustaría usar Jazmín Para pruebas de estilo BDD de mi JavaScript. Me pregunto si alguien tiene algún consejo para acceder a los 'Pacakges' generados por Jammit desde dentro de Jasmine.

El problema es que Jasmine se configura definiendo una lista de archivos JS en el disco para probar, y luego incluye esos archivos dentro de su propia página de corredor de prueba que se carga y se ejecuta en un navegador.

Podría hacer referencia a cada uno de los archivos JS individuales dentro del archivo de configuración Jasmine.yml antes de que estén empaquetados con JamMit ... Sin embargo, JamMit ya está tratando con dependencias entre archivos para mí y, lo que es más importante, también necesito acceso a el compilado plantillas de JavaScript Ese Jammit produce.

También podría ejecutar manualmente JAMMIT para generar los activos compilados primero y luego ejecutar Jasmine, pero terminaría teniendo que reinterpretar los activos a mano antes de que se ejecute cada prueba para probar los cambios, lo que aumentaría seriamente una prueba rápida. flujo de trabajo de tipo impulsado.

Me pregunto si de alguna manera podría:

  • ¿Monta el controlador JAMMIT desde dentro del servidor de rack de Jasmine para que pueda servir los paquetes de Jasmine? Básicamente, esto funcionaría de la misma manera que JAMMIT ya lo hace desde el desarrollo de Rails Env.
  • ¿Enganchar a Jasmine de alguna manera para empaquetar los activos en cada carga de página antes de ejecutar las pruebas? Esto sería más lento, pero me ahorraría un paso y aseguraría que las cosas estuvieran actualizadas.

¿Alguna sugerencia? Solo estoy empezando con esto, así que podría estar mal todo. Cualquier consejo sería muy apreciado. :-)

¡Gracias! -John

¿Fue útil?

Solución

Aquí está el combo mágico que estás buscando:

  1. Utilizar el gema de guardia junto con GOORD-JAMMIT GEM Para observar los cambios en los activos de su proyecto
  2. Instala el Complemento de livereload en el navegador de su elección e instale el GOOR LIVERELOAD GEM Por lo tanto, puede hacer que su navegador se vuelva a cargar cada vez que cambien sus especificaciones o activos.
  3. Ingrese la guardia, luego rastrate el jazmín, luego cargue las especificaciones de Jasmine en tu navegador, luego presione el botón de recuperación en vivo para conectarse al servidor de relieve en vivo que comenzó el guardia
  4. Cambia tus archivos. Mira la magia que ocurre mientras el guardia corre Jammit y le indica a tu navegador que actualice las especificaciones de Jasmine.

Aquí hay un ejemplo de GuardFile para comenzar:

guard 'jammit' do
  watch(%r{public/javascripts/(.*)\.js})
  watch(%r{app/views/jst/(.*)\.jst})
  watch(%r{public/stylesheets/(.*)\.css})
end

guard 'livereload', :apply_js_live => false do
  watch(%r{app/.+\.(erb|haml)})
  watch(%r{app/helpers/.+\.rb})
  watch(%r{public/.+\.(css|js|html)})
  watch(%r{config/locales/.+\.yml})
  watch(%r{spec/javascripts/.+\.js})
end

Otros consejos

Se me ocurrió una solución OK: forzar a JamMit a recargar y empaquetar cuando comienza Jasmine. Para hacer esto, debe editar el archivo jasmine_config.rb:

require 'jammit'
module Jasmine
  class Config

    Jammit.reload!
    Jammit.package!

   end
end

Escribí una publicación un poco más detallada al respecto aquí: http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top