2016-06-01 11 views
0

Kürzlich machte ich eine einfache Ruby-Anwendung und habe Minitest verwendet, um es zu testen.Störende Warnung beim Testen

Nach dem Ratschlag des Head First Ruby Buches, automatisierte ich diese Tests mit Rake (ich schreibe, was es mir gesagt hat, in das Rakefile am Ende dieses Posts zu setzen, falls das hilft). Der Test scheint gut zu laufen (alles geht so, wie ich es erwarten würde), aber ich bekomme immer diese Benachrichtigung am Ende von allem:

rvm/gems/ruby-2.3.0/gems/guard- 2.14.0/lib/guard/notifier.rb: 28: Warnung: Instanzvariable @notifier nicht initialisiert

Manuelles Testen der Dinge, indem man Ruby angibt, welche Dateien ich haben möchte, habe dieses Problem nicht, nur wenn ich " Rake-Test "um Dinge zu testen.

Soweit ich das beurteilen kann, hängt das damit zusammen, dass ich Guard eingerichtet habe, als ich Michael Hartls Rails Tutorial am Ende von Kapitel 3 folgte. Ich befolgte die Anweisungen zum Einrichten (richtig, soweit Ich kann sagen), und das war alles in einem komplett anderen Ordner (schließlich haben meine Ruby und Rails Projekte den gleichen übergeordneten Ordner, in dem sie sitzen, aber sie sind selbst in komplett separaten ruby_projects und rails_projects Ordnern). Wenn möglich, möchte ich diese Benachrichtigung in meiner Ruby-Anwendung stoppen, die ich gerade teste. Gibt es einen guten Weg, dies zu tun?

Inhalt der Rakefile Ich verwende, wenn das hilft: erfordern „Rake/testtask“

Rake::TestTask.new(:test) do |t| 
    t.libs << "lib" 
    t.test_files=FileList['test/**/test_*.rb'] 
end 

Meine Testdatei erfordert Minitest/Autorun, und die Datei für die Anwendung, die ich testen bin, dann hat die normalen Tests

Antwort

0

Scheint, wie es einige seltsame Konflikt ist ...

Der Grund dafür ist, dass Guard::Notifier.connect nicht angeschlossen ist. Wenn Sie Guard ausführen, wird normalerweise Guard.setup aufgerufen, der dies tut.

Wenn Sie nicht Wache (z.B. interaktiv), dann die folgenden von Ihrem Rakefile Aufruf sollte das Problem umgehen:

Guard::Notifier.connect(notify: false, silent: true) 
    Guard::Notifier.disconnect 

Dies wird die Variable initialisiert werden.

Für eine schnellere Reaktion melden Sie solche Probleme immer auf der Projektseite auf Github. Wenn Sie das Projekt freigeben können, ist dies möglicherweise eine bessere Lösung. (Es ist am besten, ein Repository zur Verfügung zu stellen, da es das Reparieren beschleunigt und oft sind solche Fehler ohne den genauen Code sehr schwer zu simulieren).

Verwandte Themen