gpt4 book ai didi

ruby - 测试 block 是否通过 RSpec Mocks

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:10 26 4
gpt4 key购买 nike

我可以测试参数是否传递如下:

RSpec.describe do
it do
obj = double
expect(obj).to receive(:method).with(1, 2, 3)
obj.method(1, 2, 3)
end
end

我应该如何处理 block 参数?我理想中的代码:

RSpec.describe do
it do
obj = double
proc = Proc.new{}
expect(obj).to receive(:method).with(1, 2, 3).with_block(proc)
obj.method(1, 2, 3, &proc)
end
end

最佳答案

看来我不能简单地测试一个 block 是否通过方法链传递。我找到了一个乏味的答案,Block Implementation:

RSpec.describe do
it do
obj = double
proc = Proc.new{}
expect(obj).to receive(:method).with(1, 2, 3) do |*args, &block|
expect(proc).to be(block)
end
obj.method(1, 2, 3, &proc)
end
end

但是,我们不能像 receive(:method).with(1, 2, 3){|*| 同时使用 block 实现和其他响应配置方法。 ...}.and_call_original.

关于ruby - 测试 block 是否通过 RSpec Mocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com