Clases definidas en CoffeeScript no encontradas por Jasmine Specs
-
25-10-2019 - |
Pregunta
Estoy construyendo una aplicación Backbone.js en un back-end de Rails 3.1. Estoy usando CoffeeScript para escribir las clases de columna vertebral, y Jasmine (a través de Jasmine-Headless-Webkit) para las pruebas.
Dado el siguiente árbol (parcial):
.
├── app
│ ├── assets
│ │ ├── javascripts
│ │ │ └── views
│ │ │ ├── avia_view.js.coffee
├── spec
│ ├── javascripts
│ │ └── views
│ │ └── avia_view_spec.js.coffee
... Yo esperaría avia_view_spec.js.coffee
saber sobre Avia.AviaView
, que se define en avia_view.js.coffee
.
Sin embargo, obtengo la siguiente salida de ejecución bundle exec jasmine-headless-webkit
:
Running Jasmine specs...
F
Avia.AviaView render creates a new MatricesView . (/home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee:10)
ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~5)
ReferenceError: Can't find variable: Avia in /home/duncan/avia/spec/javascripts/views/avia_view_spec.js.coffee (line ~10)
Mi jasmine.yml
contiene lo siguiente:
src_files:
- public/javascripts/prototype.js
- public/javascripts/effects.js
- public/javascripts/controls.js
- public/javascripts/dragdrop.js
- public/javascripts/application.js
- public/javascripts/**/*.js
yo pensar Necesito decirle a Jasmine que cargue el contenido de avia_view.js.coffee
Pero no estoy completamente seguro de cómo. Agregar una referencia explícita en el src_files
sección en jasmine.yml
no parece marcar la diferencia ...
¿Alguien podría decirme qué estoy haciendo mal aquí? Sospecho que es algo simple ...
Solución
Sin haber visto gran parte de su código, sospecharía que se lleva a cabo la función de la función de Coffeescript (documentos). Debe asegurarse de que todos los símbolos que desea usar se exporten a un lugar que pueda obtener (aquí es una discusión exhaustiva al respecto).
Editar: aquí es Otra documentación larga y teórica pero buena sobre este tema.
Otros consejos
Intenta agregar esto a tu avia_view.js.coffee
(exports ? this).Avia = Avia
Ver este para una explicación detallada.
Alternativamente intento este;
window.Avia = Avia
Nos encontramos con el mismo problema; te lo recomiendo mucho Arroz jazmín