如何模拟/存根,以便我可以测试在each_line内发生了什么?如何模拟/存根文件.open each_line在ruby/rspec
File.open(file_path) do |file|
file.each_line do |line|
#do something here
end
end
如何模拟/存根,以便我可以测试在each_line内发生了什么?如何模拟/存根文件.open each_line在ruby/rspec
File.open(file_path) do |file|
file.each_line do |line|
#do something here
end
end
尝试是这样的:
RSpec.describe "an example of mock" do
let(:content) { StringIO.new("1\n2\n3") }
specify do
allow(File).to receive(:open).and_yield(content)
# do whatever you want
end
end
刚刚尝试过,这是我得到的:'失败/错误:describe_class.new.process_file(“test”)
将“期望”更改为“允许”(请参阅更新示例)。但它看起来像生产代码的'File.open' – jalkoby
不提供块只是测试下一个代码 '''红宝石 RSpec.describe“的一个例子模拟”做 设(:内容){ StringIO.new(“1 \ n2 \ n3”)} 指定做 允许(File).to接收(:打开).and_yield(内容) File.open('foo'){| f |放f.read} 结束 结束 ''' – jalkoby
你在实际做的每一行里面......你可以测试是什么? –
我可以,但我宁愿找到更好的解决方案,并进行更彻底的测试。 – newUserNameHere
我想你应该在测试最终结果时测试实现细节... –