2012-03-25 4 views
9

Używając ogórka do rubinu na szynach, przeprowadziłem test, który nie udał się z głupiego powodu (zrobiłam literówkę). Naprawiłem problem i nagle Cucumber już nie będzie działał. Nie zmieniłem żadnego z plików, do których się odnosi:Ogórek twierdzi, że jego pliki pomocnicze są zepsute?

/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:3: 
syntax error, unexpected '{', expecting keyword_then or ';' or '\n' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:6: syntax error, unexpected keyword_else, expecting '}' 
    else { 
     ^
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:7: syntax error, unexpected ';', expecting tASSOC 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber- 

1.1.8/lib/cucumber/js_support/js_dsl.js:13: syntax error, unexpected ',', expecting $end (SyntaxError) 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load' 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `block in load' 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:225:in `load_dependency' 
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_language.rb:114:in `initialize' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:74:in `new' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:74:in `load_programming_language' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:185:in `programming_language_for' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:169:in `load_file' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:82:in `each' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime.rb:175:in `load_step_definitions' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime.rb:40:in `run!' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/cli/main.rb:43:in `execute!' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/cli/main.rb:20:in `execute' 
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/bin/cucumber:14:in `<top (required)>' 
/usr/local/bin/cucumber:19:in `load' 
/usr/local/bin/cucumber:19:in `<main>' 

Oczywiście coś poszło straszliwie straszliwie. Moje pytanie jest po prostu, jak mam to naprawić? Czy to znany błąd? Czy mogę/powinienem ponownie zainstalować ogórek? Cały stos? Mam bardzo małe doświadczenie z Rails and Cucumber, a oczywiste rozwiązania mnie zawiodły (plik, na który się skarży, jest w porządku, właściwie dość czytelny, nic dziwnego w tym, że uruchomienie go ponownie pokazuje, że to nie była tylko fiołek; Naprawiłem zmiany nic).

Linie 3-7 z js_dsl są:

if (func == null) { 
     jsLanguage.execute_step_definition(regexp); 
    } 
    else { 
     jsLanguage.add_step_definition(regexp, func); 
    } 
    }, 

Więc sprawdziłem plik definicji krok, a także wygląda dobrze. Zwykle błędna definicja kroku daje komunikat o błędzie, a nie pełną awarię w ten sposób.

+0

możesz oznaczyć najlepszą odpowiedź lub zaktualizować pytanie ur z rozwiązaniem, które wpadłeś? bo wygląda na to, że żadna z odpowiedzi nie jest pomocna. –

+0

@HadyElsahar Podałem poniżej swoje rozwiązanie, ale nie jest ono dobre i nadal nie rozumiem, co jest nie tak. Masz jednak całkowitą rację, żadna z odpowiedzi nie jest pomocna, dlatego nie zaakceptowałam żadnej. – Yamikuronue

Odpowiedz

3

ja nawet nie ...

Moi koledzy odkryli problem here i roztwór here

Widocznie coś, co nazywa „theRubyRacer”, który był częścią obrazu kazano mi używać jest teraz " przestarzałe ", co najwyraźniej oznacza" łamie ogórek, mimo że działa dobrze dziesięć minut temu ". W jakiś sposób w grę wchodzi "simplecov", co oznacza, że ​​nie mam pojęcia, w jaki sposób mam uzyskać dane liczbowe wymagane do zadania, ale już mnie to nie obchodzi, ponieważ jestem sfatygowany i zdezorientowany, a teraz działa. Zaczęło się to dzisiaj, więc myślę, że coś gdzieś skontaktowało się z jakimś serwerem, który powiedział, że klejnot był przestarzały i dlatego odmówił korzystania z niego?

Jeśli ktoś ma dodatkowe informacje, proszę dać mi znać.


Ponieważ najwyraźniej te linki są zamurowane off, problem był następujący:

Więc zidentyfikowali problem:

Folder pokrycia.

Mogę uruchomić i przekazać moje testy ogórkowe i rspec bez problemu, jeśli nie wstawię, wymagają "simplecov" SimpleCov.start "szyn" w górnej części env.rb.

Wszystkie moje kroki są zielone, ale jeśli dodaję te dwie linie, otrzymałem błąd powyżej. Jeśli usunę folder de/pokrycia, mogę uruchomić go po zakończeniu testu, ale następnym razem błąd zostanie odtworzony ponownie.

Proszę o pomoc?

a następnie roztwór wspomniano był

Komentarz ten wiersz z Gemfile i uruchomić ponownie zainstalować pakiet:

# gem 'therubyracer'

To już nieaktualne.Zobacz:

http://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar#therubyracer

który mówi:

Jeśli wcześniej za pomocą therubyracer lub therubyracer-Heroku te kamienie nie są już wymagane i zdecydowanie odradzane, ponieważ te kamienie użyć bardzo dużej ilości pamięci.

+0

Nie widzimy tych linków, które podałeś. I twoje wyjaśnienie problemu (z którym również się spotkałem) wydaje się mało prawdopodobne, delikatnie mówiąc. Więcej informacji? –

+0

@ MarnenLaibow-Koser Jestem tak zagubiony jak ty. To była pierwsza ekspozycja, jaką miałem na Ruby i Rails i była to wielka katastrofa, podczas której my uczniowie musieliśmy sami rozwiązać problem; Nie mam pojęcia, jaki był prawdziwy problem, tyle tylko, że usunięcie programu RubyRacer spowodowało, że błąd zniknął. Zobaczę, czy nie uda mi się pobrać treści linków, myślałem, że fora są publiczne. – Yamikuronue

+0

Nie sądzę, że jest to kwestia termoterapii, przynajmniej nie do końca. Po prostu zdarzyło mi się to mniej więcej w tych okolicznościach w http://stackoverflow.com/a/10020625/109011, więc myślę, że to, co się dzieje, to to, że funkcje w nieistniejącym katalogu zostały określone, i że to było trochę zagmatwane Ogórek do wykonywania JavaScript tak, jakby był Ruby. –

2

Dla jasności: bec == bundle exec ogórka

Zmusza dyrektywę exec'd do korzystania z klejnotów, jak określono w Gemfile.lock

Te dwie prace: bec & & bec cechy /foo.feature

Ten jeden nie, narzeka błędów składniowych w js_dsl.js: bec foo.feature

ogórek-1.1.9 (i bardzo prawdopodobne inne wersje też) zakłada funkcje/

1

ja otrzymuję ten sam błąd składni z tego samego kawałka poprawnie składnię JavaScript.

Mogłoby się wydawać zupełnie niepowiązane, ale jeśli masz

Feature: xyz 

    @some-tag 
    Scenario Outline 
    When I "<foo>" 

    @some-tag # TRY REMOVING THIS LINE 
    Examples: 
    |foo| 
    |bar| 

następnie spowodował ten błąd w moim przypadku. Spróbuj usunąć drugi znacznik. Tagi są dla scenariuszy.

0

Czy kodujesz silnik? Ponieważ byłem, gdy wpadłem na dokładnie ten sam problem. Wykreśliłem go w Cucumber, próbując załadować moje pliki .js z aplikacji/zasobów (myślę, że są to funkcje lub ich części), używając niewłaściwych ścieżek (w debugerze rekursywnie ładowało wszystkie pliki z projektu do domu, tj. ".").

Myślę, że tak się dzieje, ponieważ ogórek oczekuje, że funkcje będą obecne w folderze silnika, a nie fikcja. Przenosząc folder z funkcjami do folderu Engine, udało mi się go naprawić i teraz działa Cucumber. W tym celu musiałem wprowadzić pewne zmiany w env.rb, które opisano w sekcji "Ogórek" na tym blogu: http://blog.crowdint.com/2012/03/20/mountable-rails-engines.html

Prawdopodobnie istnieje sposób na skonfigurowanie Ogórka do pobrania funkcji z fikcyjnego folderu, ale Nie zbadałem tego.

0

Mam ten błąd również, problemem, który miałem był dwa ./coverage folderów. Sprawdziłem. -iname coverage "i usunął folder zasięgu, który nie był wymagany.

1

Miałem ten problem i zdałem sobie sprawę, że jestem po prostu głupi.
robiłem:

bundle exec cucumber features/a_switch_store_navigation.feature -tags @foo 

zamiast:

bundle exec cucumber features/a_switch_store_navigation.feature --tags @foo 

(--tags podwójna kreska)

0

byłem testowania funkcji przesyłania plików i był przy użyciu testu JavaScript i CSS plik do przesłania w testach używających Rack :: Test :: UploadedFile. Kiedy zmieniłem nazwę JS i CSS z rozszerzeń .js/.css na rozszerzenia .js.test/.css.test, ten błąd zniknął.