0
我想發送一條警告給用戶,如果他們給::config
方法錯誤的鍵,但也讓該方法繼續執行。所以,這是寫給STDOUT的,對吧?RSpec測試使用Ruby寫入STDOUT
def configure opts={}
if (@valid_config_keys - opts.keys).any?
print "WARNING message"
end
# rest of method
end
我有一個測試不及格:
it "should warn the user against bad data" do
STDOUT.should_receive(:print).with("WARNING message")
subject
end
即使我看到,當我運行測試所顯示的警告消息。我無法弄清楚如何在這裏訪問正確的STDOUT
對象,因爲代碼肯定有效。我也直接從測試中將警告信息複製到生產代碼中,所以我確信消息中沒有任何小的錯別字。任何幫助都會很棒。
這樣的工作,但只有當我打印爲'Kernel.print'時纔有效。如果我只是調用'print',則顯示輸出,但測試仍然失敗。想知道爲什麼會這樣? –
嘗試使用'configure opts'方法定義的類的名稱替換'Kernel' –
非常棒的人。非常感謝。 –