我正试图让这个测试失败:)
it "should display the question" do
@ui.should_receive(:puts).with("What's your name?").once
@ui.ask_question("What's your name?")
end
即使我没有在我的函数中调用puts,它也会过去。
答案 0 :(得分:3)
基本上,@ui应该在一个可能默认为$ stdout的对象上调用.puts。然后在测试中,您可以将$ stdout替换为可以设置期望值的StringIO对象。这样可以使您的@ui对象更加灵活。
答案 1 :(得分:1)
鉴于代码:
require 'rubygems'
require 'spec'
class UI
def ask_question(q)
end
end
describe UI do
before do
@ui = UI.new
end
it "should display the question" do
@ui.should_receive(:puts).with("Whats your name?").once
@ui.ask_question("Whats your name?")
end
end
我得到了失败:
F
1) Spec::Mocks::MockExpectationError in 'UI should display the question'
#<UI:0xb738effc> expected :puts with ("Whats your name?") once, but received it 0 times /home/avdi/tmp/puts_spec.rb:15:
Finished in 0.002575 seconds
1 example, 1 failure
您使用的是什么版本的RSpec?
答案 2 :(得分:0)