我是ruby和rspec的新手。 我有一个在ruby中与S3交互的模块。 在我的代码中我:
最后,我将对象保存到本地文件:
File.open(local_filename, 'wb') do |s3file|
object.read do |chunk|
return completed if stop?
s3file.write(chunk)
end
我的代码效果很好,但是我对单元测试有问题,
特别是我在模拟object.read do | chunk |时遇到问题一部分。
无论我尝试什么,大块都空了。
有人可以帮忙吗?
谢谢。
答案 0 :(得分:1)
试试这个:
s3_object = class_double("S3Object")
allow(s3_object).to receive(:read).and_return(<what ever you want>)
如果您需要在测试中存储API响应而不进行多次调用,请查看https://github.com/vcr/vcr
答案 1 :(得分:0)
如果你想嘲笑这个:
create a new S3 instance : s3 = AWS::S3.new()
你做了
allow_any_instance_of(AWS::S3).to_receive(:new).and_return(<the return value of the method>)
您可以按照之前的建议使用录像机,但是如果您在团队中工作并且如果您同时删除了同一个录像带,则会与另一个团队成员同时运行测试时遇到问题。