2012-04-09 17 views
0

Ich bin derzeit in section 10.3.2 der Rails Tutorial (Beta) und stieß auf einige Probleme mit RSpec.Rails Tutorial - seltsame RSpec Verhalten

rspec spec/ runs perfekt, aber wenn ich rspec spec/requests/micropost_pages_spec.rb tun, wie im Tutorial beschrieben ich die folgende Fehlermeldung erhalten:

Failures: 

    1) Micropost pages micropost creation with invalid information should not create a micropost 
    Failure/Error: before { visit root_path } 
    ActionView::Template::Error: 
     undefined method `model_name' for NilClass:Class 
    # ./app/views/shared/_micropost_form.html.erb:1:in `_app_views_shared__micropost_form_html_erb__567210303736562711_70234980477780' 
    # ./app/views/static_pages/home.html.erb:8:in `_app_views_static_pages_home_html_erb___61006871036382679_70234970424160' 
    # ./spec/requests/micropost_pages_spec.rb:11:in `block (3 levels) in <top (required)>' 

Durchführung den Tests manuell im Web-Browser scheint perfekt als gut zu funktionieren.

Ich bin mir nicht sicher, ob ich etwas falsch gemacht habe oder ob es im Tutorial einen "Bug" gibt. Kann jemand einen Hinweis geben?


UPDATE 1: Hier ist ein Link auf die whole project on GitHub.


UPDATE 2: Ich fand nun heraus, dass, wenn ich starten Sie den rails server ich den Fehler, auch wenn ich die Seite traf das erste Mal. Aber wenn ich die Seite ein zweites Mal lade (neu lade), dann funktioniert es perfekt.

+2

Können Sie bitte [gist] (https://gist.github.com/) Ihren spec_helper, betroffene Spezifikation, Controller und Ansicht. Toll wäre es, Ihre komplette Anwendung auf github zu pushen;) – Mailo

+0

Hier ist es: https://github.com/znq/sample_app/tree/396d503d52b437790859917ce710c1aa59d3a426 – znq

+1

Können Sie versuchen, '<% = render 'shared/microprop_form'%>' zu ändern in home.html.erb bis '<% = render: partially =>" shared/micropost_form ",: localhosts => {: micropost => @micropost}%>' und dann 'form_for (micropost)' in _micropost_form.html verwenden .erb? – DanS

Antwort

0

Das Problem gefunden. Eher blöder Fehler. In meinem

hatte ich
def home 
    def home 
     @micropost = current_user.microposts.build if signed_in? 
    end 
    end 

Danke trotzdem für die Tipps.