如何使用 rspec 测试写入文件?
How to test write to file with rspec?
我有这样的函数代码:
Dir.mkdir('config') unless File.exist?('config')
File.open('config/brakeman.yml', 'wb') do |file|
file.write(response.body)
如何测试 file.write(response.body) 行?
我试着像这样模拟和存根:
allow(response).to receive(:body).and_return(body)
allow(File).to receive(:open).with('config/brakeman.yml', 'wb') do |file|
file.write(response.body)
end
expect(File).to receive(:open).with('config/brakeman.yml', 'wb')
subject.create_config(response)
expect(file).to receive(:write).with(body)
expect(File.open('config/brakeman.yml')).to eq(body)
我认为测试标准库方法不是一个好主意。只需用
覆盖它
allow(File).to receive(:open).with('config/brakeman.yml', 'wb') do |file|
expect(file).to receive(:write).with(response.body)
end
我想这应该足够了
不要测试已经测试过的代码:)
我有这样的函数代码:
Dir.mkdir('config') unless File.exist?('config')
File.open('config/brakeman.yml', 'wb') do |file|
file.write(response.body)
如何测试 file.write(response.body) 行? 我试着像这样模拟和存根:
allow(response).to receive(:body).and_return(body)
allow(File).to receive(:open).with('config/brakeman.yml', 'wb') do |file|
file.write(response.body)
end
expect(File).to receive(:open).with('config/brakeman.yml', 'wb')
subject.create_config(response)
expect(file).to receive(:write).with(body)
expect(File.open('config/brakeman.yml')).to eq(body)
我认为测试标准库方法不是一个好主意。只需用
覆盖它allow(File).to receive(:open).with('config/brakeman.yml', 'wb') do |file|
expect(file).to receive(:write).with(response.body)
end
我想这应该足够了
不要测试已经测试过的代码:)