2009-08-19 4 views
1

Ich arbeite auf Schienen mit Rspec, Rspec-Schienen, Gurke und Webrat. Ich versuche, BDD und Tests im Allgemeinen zu lernen. ich eine Gurke Szenario wie dieses:Gurke: Rails dynamic find funktioniert nicht in paths.rb

Scenario: Questions List 
    Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 
    When I go to the experiment page for quiz titled "Pearl Jam" 
    Then I should see "Corduroy" 
    And I should see "Dissident" 

I alrady Schritt 1 hinzugefügt haben, wo ich erstellen und ein Quiz speichern richtig (I durch Puts getestet). Jetzt arbeite ich an Schritt 2. Ich bin

when /^the experiment page for quiz titled "(.*)"$/i 
    new_quiz_experiment_path(Quiz.find_by_title($1)) 

find_by_title nicht funktioniert Aus irgendeinem Grund einen neuen Weg in paths.rb hinzufügen. Ich bekomme diese Fehlermeldung:

new_quiz_experiment_url failed to generate from {:quiz_id=>nil, :action=>"new", :controller=>"experiments"}, expected: {:action=>"new", :controller=>"experiments"}, diff: {:quiz_id=>nil} (ActionController::RoutingError) 

Ich bin sicher, dass der Datensatz dort ist, und richtig gespeichert; wenn ich einfüge

puts Quiz.find(1).title 

Ich bekomme "Pearl Jam". Sieht aus wie find_by funktioniert nicht, was da die Gurken-Datei generiert ziemlich seltsam enthält dieses Beispiel:

# when /^(.*)'s profile page$/i 
    #  user_profile_path(User.find_by_login($1))  

Ich habe auch versucht, eine einfachere zuerst mit Bedingungen zu finden, es funktioniert auch nicht.

Irgendeine Idee?

Vielen Dank im Voraus,
Davide

+1

Versuchen Sie es mit "find_by_title!" mit dem Ausrufezeichen am Ende. Es könnte eine aussagekräftigere Fehlermeldung geben. – ryanb

+0

Perfekter Tipp. Ich habe "Quiz mit Titel = Pearl Jam" nicht gefunden; Nach dem Hinweis erkannte ich, dass ich den vorherigen Schritt inkonsistent analysiert hatte, den Namen als "Pearl Jam" (mit Anführungszeichen) speichern; das erklärt, warum ich die Platte nicht gefunden habe. Vielen Dank! – nutsmuggler

+0

Auch ich merke gerade, dass du Ryan von Railcasts bist. Diese Testfälle wurden nach Ihrer Gurkeneinführung modelliert, daher war Ihr Trinkgeld recht passend und zeitgerecht! Danke nochmal, auch für den tollen Railcast-Job! – nutsmuggler

Antwort

1

Dank ryanb Vorschlag konnte ich den Fehler finden, die

Given quiz titled "Pearl Jam" has questions named "Corduroy, Dissident" 

Im Grunde hatte ich diesen Schritt inconsisetntly in

wurde analysiert; Ich hatte die Anführungszeichen in dem ersten Regex eingesetzt, so wurde die Platte gespeichert als

"Pearl Jam" 

Ich glaube, ich habe zwei Dinge lerned:

  • Seien Sie vorsichtig mit Anführungszeichen in Schritt Definitionen
  • Verwenden Sie die Methode mit der zusätzlichen ! für aussagekräftigere Fehlermeldungen.
+0

Danke! Dieses Problem plagen mich und ich hatte das gleiche Problem. –

Verwandte Themen