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' –
非常棒的人。非常感谢。 –