Ich verwende rspec für meinen Test in einem Ruby-Projekt, und ich möchte angeben, dass mein Programm nichts ausgeben soll, wenn die Option -q verwendet wird. Ich habe versucht:check für (das Fehlen von) `puts` in RSpec
Kernel.should_not_receive :puts
Das führte nicht zu einem Test nicht bestanden, wenn es auf die Konsole war.
Wie überprüfe ich das Fehlen der Textausgabe?
Für mich erwartet: Schreiben funktioniert, aber erwarten: puts nicht. Ruft Ihr Code $ stdout.puts auf oder setzt nur? –
Einfach ausgedrückt, würde ich nie zu $ stdout schreiben, da das nicht sehr dynamisch ist. Stattdessen würde ich $ stdout zuweisen, wie zu einem stringio, so dass "puts" zu dem geht, was ich will. Denken Sie daran, dass Sie nicht erwarten: Schreiben Sie nicht erwarten, schreiben. Das Gleiche gilt für Puts. Ich würde testen, um zu sehen, was Sie erhalten, indem Sie einen positiven Test sowie einen negativen Test machen. Zum Beispiel, wenn ich sage "Ich sollte keinen Hut für den weltlichen Geschenkspendentag bekommen". Das heißt nicht, dass ich keinen Schal bekommen habe. –