RSpec load_missing_constant, erwartetes X, um Y zu definieren (und das tut es)

8

Wenn wir

ausführen

bundle exec rake spec

es Fehler beim Versuch, die Umgebung mit dem Fehler zu laden:

%Vor%

Die Datei app/models/links/Category.rb definiert tatsächlich Links::Category . Noch seltsamer ist, dass ein Fehler nicht auftritt, wenn man unter Wächter und Spork läuft (der Standard, wie wir Tests ausführen):

bundle exec guard -i

Führt die Testsuite wie erwartet ohne Probleme aus.

Spork ist so konfiguriert, dass es rspec ausführt, daher bin ich etwas verwirrt darüber, warum das Ausführen von rake spec manuell dies verursachen würde.

Ich habe ähnliche Probleme gesehen, die anscheinend gelöst wurden, indem ich autoload_paths ansah und nachprüfte, ob es lib und lib/** enthielt, aber unser Programm macht nichts Ungewöhnliches mit autoload_paths, die ich sehen kann. Unser autoload_paths sieht so aus (definiert in application.rb):

%Vor%

(Wir verwenden bundle exec rake spec auf unserem CI-Server, um die Tests auszuführen, anstatt sie zu schützen, die wir auf unseren Entwicklungsmaschinen verwenden.)

Wird category.rb geladen

?

Hinzugefügt puts 'Hey' am Anfang von category.rb und puts 'Yo' am unteren Rand, und wenn die Spezifikationen ausgeführt werden, fügt die Ausgabe es hinzu:

%Vor%

app / models / links / link.rb :

%Vor%

app / models / links / category.rb :

%Vor%

spec_helper.rb

%Vor%

** Einfachstes category_spec.rb, das den Fehler * verursacht:

%Vor%

Rechenausführung :

%Vor%     
Michael Shimmins 12.11.2012, 22:02
quelle

1 Antwort

4

Wenn Sie Links :: Category in Ihre Spezifikation schreiben, lädt Rails wahrscheinlich automatisch das Links -Modul und Links::Category -Klasse.

Offenbar kann dieser seltsame Fehler auftreten, wenn Sie das Modul Links nicht richtig definieren. Sehen Sie sich die obigen Kommentare an, um mehr darüber zu erfahren, wie wir das Problem gelöst haben.

    
David Grayson 19.11.2012, 07:58
quelle

Tags und Links