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 ''
Dies ist ein großartiges einfaches Beispiel, um mit rspec zu beginnen. Damit alles funktioniert, machen Sie folgendes:
rspec
spec/bowling_spec.rb
aus, wenn Sie rpsec 2 verwenden. spec spec/bowling_spec.rb
aus, wenn Sie rspec 1 verwenden. Auch ein aktuelles Beispiel finden Sie hier .
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.
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.