2012-03-28 5 views
8

Test rspec kończy się niepowodzeniem, gdy próbuje się kliknąć przycisk click_ "Utwórz moje konto", mówiąc "Nie można znaleźć działania" create "dla UsersControllerSamouczek Ruby on Rails 7.2.2: Błąd rspec: nie można znaleźć działania 'create' dla UsersController

Zakładam, że jest to RESTNY problem, gdzie domyślnie jest POST zamiast GET (lub coś w tym stylu) .Dlaczego oh, dlaczego inaczej byłby próba wywołania "create" zamiast "new"? następna sekcja - 7.3 - zdefiniowana jest akcja "tworzenia", ale sam kurs mówi, że testy powinny kończyć się do końca 7.2.2:

Z drugiej strony, po prostu może mi brakować czegoś. nie piszę do administratora na stronie tutoriala

będę pisać mojego kodu ale zweryfikowaniu, że jest taka sama jak w przykładach tutorialu: http://ruby.railstutorial.org/chapters/sign-up?version=3.2#sec:signup_form

+0

Właśnie przejrzałem wyjście HTML dla formularza i na pewno napisałem POST. Co oznacza, RESTfully, że akcja jest "tworzyć". Więc może to tylko pomyłka w samouczku. Zamierzam ugryźć bullet i wysłać maila do Michaela (admin). –

+0

Widać z listingu 7.20, można stwierdzić, że wygenerowany HTML faktycznie wyświetla to działanie POST. Alex

Odpowiedz

5

Nie, nie brakuje niczego. Wygląda na to, że łapiecie drobny błąd doco.

Rzeczywiście, Hartl tak mówi prawo na początku 7.3.1 „Naszym pierwszym krokiem jest wyeliminowanie błędów, które obecnie wyniki podczas składania formularz rejestracyjny, jak można sprawdzić w swojej przeglądarce lub * uruchamiając test dla rejestracja z nieprawidłowymi informacjami * "(mój nacisk).

Nadal chciałbym, żeby to wyjaśnił, wydaje się, że jest w tym trochę więcej. Zdarza się też, że nie łapię żadnych błędów regex dla źle sformułowanych adresów e-mail.

+0

Zostało naprawione.:-) – mhartl

10

Wiem, że to jest stare, ale miałem właśnie ten sam problem i opublikuję go na wypadek, gdyby ktoś nowy potrzebował pomocy.

To, co zdezorientowało mnie, to zdanie w 7.2.2: "Przy tak zdefiniowanej zmiennej @user test strony rejestracji powinien być ponownie przekazywany." Ale moje testy kończyły się niepowodzeniem, mimo że mój kod był dokładnie taki sam jak w przykładzie.

Problem polegał na tym, że nie wszystkie testy powinny przejść - Hartl mówi tylko o testach "strony rejestracji". W tym momencie niektóre testy w ramach "rejestracji" powinny zakończyć się niepowodzeniem.

Jeśli uruchomić polecenie Hartl daje powinieneś zobaczyć, że odpowiednie testy przechodzą:

bundle exec rspec spec/requests/user_pages_spec.rb -e "signup page" 

ja właśnie lenistwo i tylko wpisując bundle exec rspec spec/, który prowadził testy upadające też.

+0

Dodatkowo występuje błąd na liście 7.16: test "rejestracji" nazywa się "stroną rejestracji", co spowodowało, że dodałem testy do istniejącego testu strony rejestracji, a nie do nowego testu rejestracji. Możesz zobaczyć, że jest poprawiony tutaj: https://github.com/mhartl/sample_app/blob/master/spec/requests/user_pages_spec.rb – alexbhandari

3

Częścią zamieszania było dla mnie, że kiedy Michael opisał nowe testy "rejestracji", pomyślałem, że zmienił/uogólnił wcześniej utworzone testy "strony rejestracji". Z perspektywy czasu nie powinienem był tego zakładać i zdałem sobie sprawę, że zachował on testy "strony rejestracji" jako oddzielne od testów "rejestracji". Mój błąd został potęgowany przez fakt, że wziąłem jego wcześniejszą sugestię i prowadziłem strażnika/opiekuna, więc generalnie nie wykonywałem testów z wiersza poleceń, w ten sposób tracąc specyficzne referencje testowe, które on zawarł.

Powiązane problemy