【发布时间】:2016-12-31 08:16:23
【问题描述】:
我的程序从网上下载一个 zip 文件,然后对其进行解析。相关解析相关代码为:
Zip::File.open("real_file.zip") do |zip_file|
# do stuff
end
在我的 RSpec 测试环境中,我想存根此代码以解析假/模拟文件而不是真实文件。具体来说,我想将参数值“real_file.zip”替换为“mock_file.zip”。
我尝试了以下方法:
allow(Zip::File).to receive(:open).and_return(Zip::File.open("mock_file.zip"))
... 但这会阻止代码块内的代码执行 (# do stuff)。我不希望该方法返回 模拟文件内容,而是将其分配给zip_file 的值以供进一步使用。如何实现?
【问题讨论】:
-
我想你想要
allow(Zip::File).to receive(:open) { |&block| block.call(Zip::File.open('mock_file.zip')) }relishapp.com/rspec/rspec-mocks/v/3-2/docs/…
标签: rspec mocking zip rspec-rails stubbing