¿Cómo configuro Jasmine en el entorno Rails 6 (donde Webpack reemplaza la canalización de activos para Javascript) para poder probar los módulos Javascript que he escrito para mi aplicación?
Instalé la gema de jazmín, ejecuté rails generate jasmine:install
y edité jasmine.yml
para señalar la ubicación de mi fuente y especificaciones de Javascript.
El problema es que no puedo usar declaraciones de importación / exportación. (Por ejemplo, intentar cargar mi primera módulo a resultados de la prueba en este error en Chrome: Uncaught SyntaxError: Unexpected token 'export'
)
Por lo que puedo decir, necesito configurar Jasmine para usar babel; pero no tengo suerte de encontrar instrucciones sobre cómo hacer esto en el nuevo diseño de Rails 6.
Respuestas:
Sí tienes razón. El principal problema
jasmine-gem
es que no canaliza la especificación a través de babel. Permítanme publicar la solución más rápida a su problema y después de eso, pensaré en la posible implementación de un enfoque similar enjasmine-gem
.La idea principal es canalizar las especificaciones a través del paquete web de rieles siempre que tenga todas las configuraciones de babel requeridas.
jasmine-core
ya que no usaremosjasmine-gem
en esta soluciónAhora cree dos paquetes de paquetes web adicionales. Uno es para Jasmine y contendrá solo Jasmine y el corredor de prueba
Y el segundo para su código de aplicación y las especificaciones
Presta atención a tus
'../javascripts'
y'../spec'
caminos. Para mí, parecía'../../assets/javascripts'
y'../../../spec'
respetuosamente.Luego agregue el Webpack ProvidePlugin para Jasmine (agregue este código a
config/webpack/environment.js
)Agregue la página de Jasmine Ranner a su aplicación
/jasmine
rutaEsta respuesta se prepara sobre la base de esta publicación , sin embargo, volví a verificar las instrucciones en ruby 2.6.3, rails 6.0.2, agregué los cambios apropiados a las recomendaciones y comprobé que esto funciona.
Por favor, avíseme si mi respuesta fue útil para usted o si necesita información adicional. Sin embargo, voy a trabajar en una solución que tenga éxito con
jasmine
gem o implementación similar.fuente
bootstrap.min.js
está arrojando un error que básicamente significajquery
que no se está cargando antesbootstrap
. Sin embargo,] No puedo encontrar lo que en este código cambia el orden de carga de JS ... especialmente porque mi bootstrap se está cargando a través de CDN en el diseño de la aplicación después de lajavascript_pack_tag 'application'
línea yapplication.js
ya tiene unrequire('jquery')
. Si tiene esta configuración en un entorno local, ¿puede cargar bootstrap a través de CDN en el diseño de la aplicación y ver si funciona?