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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top