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 ...

¿Fue útil?

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

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