Rspec Ruby Basic Beispielfehler

8

Ich versuche, das grundlegende Beispiel für die Verwendung von rspec hier zu finden: Ссылка .

Beim Eingeben der Eingabeaufforderung

  

ruby ​​bowling_spec.rb

Ich bekomme den folgenden Fehler

Test

%Vor%

Code

%Vor%

Fehlermeldung

  

intern: lib / rubygems / custom_require: 29: in require': no such file to load -- bowling (LoadError) from <internal:lib/rubygems/custom_require>:29:in require '           von bowling_spec.rb: 2: in ''

    
John 22.02.2011, 02:55
quelle

4 Antworten

16

Dies ist ein großartiges einfaches Beispiel, um mit rspec zu beginnen. Damit alles funktioniert, machen Sie folgendes:

  1. Platziere deine bowling.rb-Datei in lib / bowling.rb.
  2. Platziere deine bowling_spec.rb-Datei spec / bowling_spec.rb.
  3. Führen Sie den Befehl rspec spec/bowling_spec.rb aus, wenn Sie rpsec 2 verwenden.
  4. Führen Sie den Befehl spec spec/bowling_spec.rb aus, wenn Sie rspec 1 verwenden.

Auch ein aktuelles Beispiel finden Sie hier .

    
Pan Thomakos 22.02.2011, 03:17
quelle
4

Ändern Sie in Ihrem bowling_spec.rb

%Vor%

bis

%Vor%

ruby ​​1.9 lädt Pfade anders als ruby ​​1.8 und fügt das aktuelle Verzeichnis nicht mehr standardmäßig hinzu

    
noli 22.02.2011 03:17
quelle
2

Als allgemeiner Hinweis zur Lösung solcher Fehlermeldungen: In 99% aller Fälle, wenn ein Computer Ihnen sagt, dass er etwas nicht finden kann, liegt es daran, dass dieses Ding nicht existiert. In 99% der Fälle ist das nicht der Ort, an dem der Computer es erwartet.

Der erste ist hier offensichtlich nicht der Fall, da bowling.rb eindeutig existiert . Ihr Problem fällt jedoch direkt in diese zweiten 99%: require lädt eine Datei aus Rubys $LOAD_PATH . Aber du hast bowling.rb nicht in ein Verzeichnis in Rubys $LOAD_PATH gestellt, sondern einfach in das gleiche Verzeichnis wie bowling_spec.rb .

Eine naheliegende Lösung wäre, dieses Verzeichnis zu Rubys $LOAD_PATH hinzuzufügen. Offensichtlich, aber - in diesem Fall - falsch.

Wenn Sie eine Datei relativ zur Position der aktuell ausgeführten Datei laden möchten, müssen Sie require_relative verwenden. Dies ist die richtige Lösung in diesem Fall.

Damit die describe -Methode sogar existent ist, geschweige denn funktioniert, müssen Sie auch require 'rspec' zu Ihrer Spezifikationsdatei hinzufügen oder sie mit der RSpec ausführen runner (dh rspec bowling_spec.rb anstelle von ruby bowling_spec.rb ), aber das ist völlig unabhängig von dem Problem, das Sie sehen.

    
Jörg W Mittag 22.02.2011 04:07
quelle
1

Erstens, aus dem Beispiel sieht es so aus, als müssten Sie rspec bowling_spec.rb oder spec bowling_spec.rb ausführen, sonst werden die "describe" -Methoden, die für die Spezifikation verwendet werden, nicht geladen und Sie werden einige andere Fehler bekommen.

Als nächstes, sind die Dateien beide im selben Verzeichnis? Sie müssen sein, mit der Art, wie Sie das require -Zeilen-Setup haben. Ansonsten denke ich, es sieht gut aus.

    
ctcherry 22.02.2011 03:05
quelle

Tags und Links