2012-04-02 6 views
0

Ich werde durch die Schienen Tutorial und bin bei section 6.11railstutorial.org - 6.11 - rspec fehlgeschlagen, ist postgresql das Problem?

Aus irgendeinem Grund bin ich immer 4 Beispiele und 4 Ausfälle in rspec vs 4 Beispiele und 1 Fehler (und folglich 0) wie im Tutorial.

ich dies in meinem rspec sehe:

Failure/Error: @user = User.new(name: "Example User", email: "[email protected]") 
    ActiveRecord::StatementInvalid: 
     PGError: ERROR: relation "users" does not exist 

Die Sache ist, ist das Tutorial entlang in SQLite zu gehen, aber ich wanderte nach Postgres (wie bereits im Tutorial vorgeschlagen), so konnte ich über Postgres lernen auch. Ist das das, was die Probleme verursacht? Sollte ActiveRecord nicht transparent machen, welche Art von Datenbank ich sowieso benutze?

ich die richtigen Datenbanken erstellt haben, meine database.yml aktualisiert, führen Sie eine db: mgirate und den Befehl

User.new(name: "Example User", email: "[email protected]") 

in einer Sandbox-Konsole funktioniert gut.

Jede Hilfe sehr geschätzt. Ich versuche hier oben auf rspec zu bleiben, für mich ist es der schwierigste Teil über das Lernen von Rails. Es fühlt sich fast so an, als würde man 90% der Tests zum Schreiben und Debuggen von Energie ausgeben. (Die einzigen Stolpersteine ​​/ Geist Biegen headca ich bisher begegnet waren rspec Tests)

Die user_rspec.rb:

require 'spec_helper' 

describe User do 

    before do 
    @user = User.new(name: "Example User", email: "[email protected]") 
    end 

    subject { @user } 

    it { should respond_to(:name) } 
    it { should respond_to(:email) } 

    it { should be_valid } 

    describe "when name is not present" do 
    before { @user.name = " " } 
    it { should_not be_valid } 
    end 
end 

-

Als sekundäre Frage finde ich, dass Meine RSPec-Tests laufen mehrmals? Ich habe das Ruby-GNTP-Juwel installiert und stelle fest, dass jedes Mal, wenn ein Test ausgeführt wird, ein Knurren mit den gleichen Informationen auftritt.

rspec multiple times

Antwort

3

OK, dachte ich es aus.

Das Problem war, dass die Entwicklungsdatenbank nicht in die Testdatenbank migriert wurde, selbst wenn rake db ausgeführt wurde: migrate, rake db: rollback und migrate, rake db: reset.

Die Lösung war es, die Datenbank zu klonen:

bundle exec rake db:test:prepare 
0

ich die gleichen Umstände hatte - von SQLite zu PG migrieren. Nach einer Neuinstallation von PG - habe ich 20 rspec Fehler bekommen - rund um Benutzer. Nach Stunden der Frustration - ein Befehl festgelegt ist Programm:

rake db: test: Vorbereitung oder Bündel exec rake db: test: Vorbereitung (je nach Einstellung)

Ruby Guides - mentions it too - http://guides.rubyonrails.org/testing.html

Wenn Sie am Ende Ihre Testdatenbank zerstören (und es wird passieren, vertrauen Sie mir), können Sie es nach den in der Entwicklungsdatenbank definierten Spezifikationen von Grund auf neu erstellen. Sie können dies tun, indem Sie rake db: test: prepare ausführen.

Verwandte Themen