2 Stimmen

rspec schlägt fehl - "Couldn't find table", aber rake db:test:prepare behebt das Problem nicht

Ich habe eine größere Umstrukturierung durchgeführt, die mehrere Migrationen erforderte. Plötzlich schlägt rspec fehl.

Could not find table 'users' (ActiveRecord::StatementInvalid)

Les users Tabelle befindet sich direkt in schema.rb:

  create_table "users", :primary_key => "user_id", :force => true do |t|
    t.string   "first_name",          :limit => 100,                                    :null => false
    t.string   "last_name",           :limit => 100,                                    :null => false
    (...)
    t.boolean  "current_student",                    :default => true,                  :null => false
    t.boolean  "unregistered",                       :default => false,                 :null => false
  end

Ich habe Folgendes ausprobiert:

  • rake db:test:prepare : Keine Änderung
  • entfernen schema.rb und die Wiederherstellung mit rake db:schema:dump : Keine Änderung

Meine Anwendung funktioniert einwandfrei - ich kann Benutzer anlegen, mich anmelden, abmelden usw. Aber keiner meiner Tests funktioniert. Was sollte ich als nächstes versuchen?

4voto

iwasrobbed Punkte 45760

Ausführen. rake db:test:load stattdessen die Testdatenbank aus der schema.rb Datei

Mit rake db:test:load wird die Testdatenbank aus der aktuellen db/schema.rb neu erstellt. Bei späteren Versuchen ist es eine gute Idee, zuerst db:test:prepare auszuführen, da es zuerst auf anstehende Migrationen prüft und Sie entsprechend warnt.

Mehr Informationen: http://guides.rubyonrails.org/testing.html#preparing-your-application-for-testing

0voto

Raphael Punkte 1621

Ich habe das Problem gefunden.

In einem meiner Modelle hatte ich einen Anwendungsbereich, der so geschrieben war:

scope :registered, where(:registered => true)

Tief im Stacktrace gab es tatsächlich einen Verweis auf diese Zeile. Ich änderte den Bereich in:

scope :registered, :conditions => {:registered => true}

...und alles hat funktioniert. Uff.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X