【发布时间】:2016-12-09 01:25:05
【问题描述】:
如何判断 VCR 是否已使用所有录制的数据?如果被测程序终止 API 访问或根本不执行任何操作,则 VCR 测试仍然正常完成(测试检查是否没有引发错误并在结束时显示完成消息)。检查状态的方法有很多种,但是让被测试的应用程序成功使用盒式磁带表明比我能想到的任何状态工件都要多。
【问题讨论】:
如何判断 VCR 是否已使用所有录制的数据?如果被测程序终止 API 访问或根本不执行任何操作,则 VCR 测试仍然正常完成(测试检查是否没有引发错误并在结束时显示完成消息)。检查状态的方法有很多种,但是让被测试的应用程序成功使用盒式磁带表明比我能想到的任何状态工件都要多。
【问题讨论】:
在insert_cassette 选项的源代码中找到了这个:
@option 选项 :allow_unused_http_interactions [Boolean] 如果设置为
false,如果盒带在所有操作之前弹出,则会引发错误
之前记录的 HTTP 交互已被使用。
默认为真。请注意,当已经发生错误时
(如$! 变量所示)未使用的交互将是
允许,这样我们就不会沉默原始错误(这几乎是
当然更有趣/更重要)。
并与此eject_cassette 选项进行交互:
@option 选项 :skip_no_unused_interactions_assertion [布尔]
如果给出true,这将跳过“没有未使用的HTTP交互”
由:allow_unused_http_interactions => false 启用的断言
卡带选项。这适用于您的测试已经完成
一个错误,但您的测试框架已经处理了它。
所以这被用作:
it 'successfully accesses the proper APIs' do
VCR.use_cassette('/some/path', allow_unused_http_interactions: false) do
expect do
expect do
described_class.new(param1, param2).process
end.to_not raise_exception
end.to output(/Done!/).to_stdout
end
end
【讨论】: