2013-06-18 11 views
6

Używam Rails 3.2.13 z wersją Ruby 2.0.0-p195. Używam klejnotu Jasmine-Rails w wersji 0.4.5 z aktywowanym potokiem aktywów. Chciałbym napisać moje specyfikacje w CoffeeScript, ale nie byłem w stanie wymyślić, jak nazwać plik i skonfigurować plik jaśmin.yml, tak aby specyfikacja została pobrana i poprawnie przetworzona.Jak używać specyfikacji CoffeeScript z Jasmine-Rails

Oto zawartość mojego pliku 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}" 

Próbowałem nazywając my_spec.js.coffee pliku. To nie działa. Oczywiście konwencja nazewnicza my_spec.js działa dobrze. Próbowałem też zepsuć wartość spec_files w jaśminie.yml bez żadnego sukcesu.

Z góry dziękuję każdemu, kto zmaga się z podobnym problemem, wymyślił go i może mi pomóc przy pisaniu nieco mniej żmudnych specyfikacji.

+0

Proszę [nie używaj podpisów lub sloganów w swoich wpisach] (http://stackoverflow.com/faq#signatures). – meagar

Odpowiedz

6

Od Jasmine-Rails's Github homepage:

Klejnot jaśminu barierki pełni popiera gazociąg zasobu Rails co oznacza, że ​​można:

  • użycie coffee_script lub inne prekompilatory JavaScript do plików źródłowych lub testowych
  • używać dyrektyw kółek do kontroli włączenia/wykluczenia plików zależnych
  • wykorzystać pipelin aktywów e ścieżki wyszukiwania do obejmują aktywa z różnych źródeł/Kamienie szlachetne

Jeśli zdecydujesz się skorzystać z pomocy rurociągu aktywów, wielu konfiguracjach jasmine.yml się zbędne i można polegać na aktywami rurociągu Rails wykonać ciężką pracę kontrolowania, jakie pliki znajdują się w twoim pakiecie testowym.

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

ten definiuje wzorzec nazw dla plików spec. To znaczy zero lub więcej znaków, a następnie Spec lub spec, z rozszerzeniem js lub coffee.

Dodaj konfigurację tras Jasmine-Rails do config/routes.rb.

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

Teraz można napisać specyfikację przetestowania Foo w specyfikacji/JavaSkrypty/my_spec.coffee.

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

Ty RoR struktura projektu powinien być częściowo tak:

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

można przetestować widowisko z:

bundle exec rake spec:javascript 

Albo można uruchomić serwera szyn i sprawdzić ścieżkę Jasmine -Rails (/specs).

+0

Hmmm, wygląda na to, że nie przeczytałeś dokładnie mojego pytania. Mam go skonfigurowany i pracy z plikami javascript jako pliki spec. Po prostu nie mogę go uruchomić z plikami CoffeeScript. Pliki .coffee są wciągane i wyświetlają błąd (tylko z rozszerzeniem .coffee innym niż plik jest identyczny z plikiem roboczym z rozszerzeniem .js), a pliki .js.coffee nie są wciągane do testów w ogóle . –

+0

@RebekahWaterbury Wiem, że chcesz napisać specyfikacje coffeescript, a to, co dostarczyłem, to podejście, w jaki udało mi się napisać specyfikacje Jasmine w coffeescript. Przetestowałem na moim serwerze i stwierdziłem, że akceptuje i uruchamia specyfikacje coffeescript. –

+0

Hmmm, to dokładnie ta sama konfiguracja, którą mam. Może jest w mojej konfiguracji Gem. Mam klejnot "coffee-rails" w bloku zasobów mojego Gemfile. Czy korzystasz z tego klejnotu i/lub grupujesz go w tej lokalizacji. Mam zamiar przenieść to na obszar niezgrupowany. Zobaczę, jak to pójdzie. –

2

Po prostu drobnostka.Konwencja nazewnictwa plików używa dwóch rozszerzeń: my_spec.js.coffee

Plik jasmine.yml oczekuje tylko "spec", po którym następuje "coffee". Te dwa rozszerzenia nie pasują do tego wzorca.

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

doskonała odpowiedź Aire Shawa stosować nazwę pliku my_spec.coffee który odpowiada oczekiwaniom pliku jasmine.yml.

Jeśli chcesz skorzystać z formularza filename my_spec.js.coffee (a także .js i .coffee), można zmienić plik jasmine.yml do:

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

używam nazwy pliku konwencję dla mojego coffeescript i to działało dla mnie.