如果用户提供::config
方法错误的密钥,我想向用户发送警告,但也让方法继续执行。那么,这是写给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
对象,因为代码肯定有效。我还将警告消息直接从测试中复制到生产代码中,因此我确定消息中没有任何小的拼写错误。任何帮助都会很棒。
答案 0 :(得分:1)
Print 是Kernel
模块的类方法。 Kernel
模块的所有类方法都作为实例方法包含在Object
类中。所有其他类都来自Object
类。因此,您应该期望从中调用print
的类来接收它:
YourClassName.should_receive(:print).with("WARNING message")