2012-03-29 16 views
0

Ich habe kommentiert out [get "Seiten/home"] in meiner routes.rb Datei, neu gestartet meine gesamte Testumgebung und der folgende Test STILL passiert:inkonsistent Rspec/Capybara testet

it "should contain 'This is a test'" do 
    get 'home' 
    response.body.should have_selector("p") 
end 

Von meinem Verständnis, capybara führt die rspec-Tests von einem "Browser" im Speicher aus. Wenn dies der Fall ist, MÜSSEN die Schienenwege existieren! Nach dem Auskommentieren meiner Routen ist es immer noch in der Lage, die Seiten zu laden - ich weiß das, denn wenn ich den <p> Selektor entferne, schlägt der Test fehl. Nach dem Ändern der routes.rb-Datei habe ich meine Testsuite neu gestartet, aber es macht keinen Unterschied.

Das lässt mich das Vertrauen in den Testprozess verlieren, weil ich Tests bestanden habe, die nicht passieren sollten !!

+0

Zeigen Sie uns volle '_spec.rb'. Vielleicht hast du 'vorher (: jedes)' mit 'hol 'nach Hause' irgendwo. –

Antwort

1

Es sieht aus wie dieses Fragment in einer Controller-Spezifikation ist, die Ihren Controller direkt trifft. In der neuesten Version von rspec, 2.9.0, führt eine fehlerhafte Route nicht zum Ausfall dieses Beispiels. Routen liegen außerhalb des Verantwortungsbereiches einer Controller-Spezifikation.

Es scheint, wie Sie eine Anfrage spec schreiben wollte, die visit Methode des Capybara verwenden sollte:

# spec/requests/something_spec.rb 
require 'spec_helper' 

describe 'home page' do 

    it "should contain 'This is a test'" do 
    visit '/pages/home' 
    page.should have_content 'This is a test' 
    end 

end 

Siehe capybara docs für weitere Beispiele. Rspec unterstützt auch routing specs, aber ich verwende normalerweise nur solche für ungewöhnliches Routing.

+0

Sehr interessant. Also die ganze Zeit, die ich in der "es" -Blocke [nach Hause] gehe, trifft es nicht einmal Capybara? Ich dachte, dass Capsybara etwas bekommt, aber anscheinend ist es nur Rspec. Ist das richtig? Und ja, das ist ein Controller-Test. – dingalingchickenwiing

+0

Ja, capybara fügt "visit", "click_on", "fill_in" usw. hinzu. Sehen Sie sich die oben verlinkten Capybara-Dokumente an, um viele Beispiele zu sehen. –