我有几个File.exists的函数?调用:
def create(one_filename, other_filename)
raise Error, "One error" if File.exists?(one_filename)
raise Error, "Other error" unless File.exist?(other_filename)
.....
end
但我不知道如何存根第二个错误。规范是:
it "should not create an existing file" do
File.stub(:exists?).and_return(true)
expect {
subject.create('whatever')
}.to raise_error("One error")
end
it "should has to exists the other filename" do
File.stub(:exists?).and_return(false)
expect {
subject.create('whatever.yaml')
}.to raise_error("Other error")
end
对于第二个规范(it "should has to exists the other filename"
),文件是否存在?存根引发第一次检查。
规定两次加注的最佳方法是什么?
答案 0 :(得分:2)
要为多个调用返回多个值,只需执行以下操作:
File.stub(:exists?).and_return(false, true)
或者,最好使用新语法:
Allow(File).to receive(:exists?).and_return(false, true)
另一个选择是根据输入变量来存根方法:
Allow(File).to receive(:exists?).with(one_filename).and_return(false)
Allow(File).to receive(:exists?).with(other_filename).and_return(true)
这具有实际测试行为而非实现的附加价值。
答案 1 :(得分:0)