2013-06-18 9 views
6

Sono in esecuzione Rails 3.2.13 con Ruby versione 2.0.0-p195. Sto usando la gemma Jasmine-Rails versione 0.4.5 con la pipeline degli asset abilitata. Vorrei scrivere le mie specifiche in CoffeeScript ma non sono stato in grado di capire come denominare il file e configurare jasmine.yml in modo tale che le specifiche vengano raccolte e analizzate correttamente.Come utilizzare le specifiche CoffeeScript con Jasmine-Rails

Ecco il contenuto del mio file jasmine.yml:

src_dir: "app/assets/javascripts" 

src_files: 
- "application.{js,coffee}" 

spec_dir: spec/javascripts 

helpers: 
    - "helpers/**/*.{js,coffee}" 

spec_files: 
    - "**/*[Ss]pec.{js,coffee}" 

Ho provato nominare il file my_spec.js.coffee. Questo non funziona. Ovviamente la convenzione di denominazione my_spec.js funziona perfettamente. Ho anche provato a fare scherzi con il valore spec_files in jasmine.yml senza alcun successo.

Grazie in anticipo a tutti coloro che hanno problemi con un problema simile, l'hanno capito e possono aiutarmi nel percorso di scrittura di specifiche leggermente meno noiose.

+0

Si prega di [non utilizzare firme o tagline nei tuoi messaggi] (http://stackoverflow.com/faq#signatures). – meagar

risposta

6

Da Jasmine-Rails's Github homepage:

Il gelsomino-rails gemma sostiene pienamente la risorsa gasdotto Rails, che significa che è possibile:

  • uso coffee_script o di altri precompilatori JavaScript per file di origine o di test
  • utilizzare le direttive di ruote dentate per controllare l'inclusione/esclusione di file dipendenti
  • leverage asset pipelin e percorsi di ricerca per includere le attività da diverse fonti/gemme

Se si sceglie di utilizzare il supporto di asset oleodotto, molti dei jasmine.yml configurazioni diventano inutili e si può contare sulla risorsa gasdotto Rails per fare il lavoro duro di controllare quali file sono inclusi nella tua suite di test.

# minimalist jasmine.yml configuration when leveraging asset pipeline 
spec_files: 
    - "**/*[Ss]pec.{js,coffee}" 

Questo definisce il modello di nome per i file di specifica. Cioè, zero o più caratteri, seguito da Spec o spec e con un'estensione js o coffee.

Aggiungi la configurazione dei percorsi di Jasmine-Rails a config/routes.rb.

mount JasmineRails::Engine => "/specs" if defined?(JasmineRails) 

Ora è possibile scrivere una specifica per testare Foo in spec/JavaScript/my_spec.coffee.

describe 'Foo', -> 
    it 'does something', -> 
    expect(1 + 1).toBe(2) 

È RoR struttura del progetto dovrebbe essere in parte simile a questo:

RailsApp/ 
|---app/ 
|---config/ 
| |---routes.rb 
|---... 
|---spec/ 
    |---javascripts/ 
     |---my_spec.coffee 
     |---support/ 
      |---jasmine.yml 

è possibile verificare le specifiche con:

bundle exec rake spec:javascript 

Oppure si può avviare il server rotaie e verificare il percorso per Jasmine -Rails (/specs).

+0

Hmmm, sembra che tu non abbia letto attentamente la mia domanda. L'ho installato e funziona con i file javascript come file spec. Non riesco a farlo funzionare con i file CoffeeScript. I file .coffee vengono inseriti e generano un errore (solo con estensione .coffee diversa dal fatto che il file è identico a un file di lavoro con estensione .js) e i file .js.coffee non vengono inseriti nei test . –

+0

@RebekahWaterbury So che vuoi scrivere le specifiche del coffeescript e quello che ho fornito è l'approccio con cui sono riuscito a scrivere le specifiche Jasmine in coffeescript. Ho provato sul mio server e ho scoperto che accetta e gestisce le specifiche del coffeescript felicemente. –

+0

Hmmm, è lo stesso identico set che ho. Forse è nel mio setup Gem. Ho gemme 'coffee-rails' all'interno del blocco degli asset del mio Gemfile. Stai usando quella gemma e/o la raggruppa in quella posizione. Ho intenzione di provare a spostarlo verso l'area non raggruppata. Vedrò come va. –

2

Solo una piccola cosa.La convenzione di denominazione dei file utilizza due estensioni: my_spec.js.coffee

Il file jasmine.yml prevede solo "specifica" seguito da "caffè". Le due estensioni non corrispondono a questo modello.

spec_files: 
    - "**/*[Ss]pec.{js,coffee}" 

risposta eccellente del Aire Shaw utilizzato il nome del file che corrisponde al my_spec.coffee aspettativa del file jasmine.yml.

Se si desidera utilizzare il modulo nome my_spec.js.coffee (così come js e .coffee), è possibile modificare il file jasmine.yml a:

spec_files: 
    - "**/*[Ss]pec.{js,coffee,js.coffee}" 

io uso il nome del file di convenzione per la mia CoffeeScript e questo ha funzionato per me.

Problemi correlati