Classi definite in CoffeeScript non trovati da specifiche Jasmine
-
25-10-2019 - |
Domanda
Sto costruendo un'applicazione backbone.js su un Rails 3.1 back-end. Sto usando CoffeeScript di scrivere le classi spina dorsale, e Jasmine (via gelsomino-headless-webkit) per il test.
Dato il seguente (parziale) albero:
.
├── app
│ ├── assets
│ │ ├── javascripts
│ │ │ └── views
│ │ │ ├── avia_view.js.coffee
├── spec
│ ├── javascripts
│ │ └── views
│ │ └── avia_view_spec.js.coffee
... mi aspetto avia_view_spec.js.coffee
da sapere su Avia.AviaView
, che è definito nella avia_view.js.coffee
.
Tuttavia, ottengo il seguente output da bundle exec jasmine-headless-webkit
esecuzione:
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)
Il mio jasmine.yml
contiene il seguente:
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
I pensare ho bisogno di dire a Jasmine per caricare i contenuti di avia_view.js.coffee
ma non sono del tutto sicuro di come. L'aggiunta di un riferimento esplicito nella sezione src_files
in jasmine.yml
non sembra fare la differenza ...
Qualcuno potrebbe dirmi che cosa sto facendo male qui? Ho il sospetto che è qualcosa di semplice ...
Soluzione
senza aver visto per gran parte del vostro codice, avrei il sospetto che Allucinante di CoffeeScript funzione di involucro ( docs ). È necessario garantire che tutti i simboli che si desidera utilizzare sono esportati in qualche parte si può arrivare a loro ( qui è una discussione approfondita su questo).
Modifica ecco un altro piuttosto lungo e la documentazione teorica ma buona su questo argomento.
Altri suggerimenti
Prova ad aggiungere questo alla vostra avia_view.js.coffee
(exports ? this).Avia = Avia
questo per una spiegazione dettagliata.
In alternativa prova a questo ;
window.Avia = Avia
Si è verificato lo stesso problema; Mi raccomando riso jasmine