我需要测试我的方法是否正确屈服,实现类似于
def method(val)
@attr = yield(val)
end
我写了我的测试:
expect{ |b| x.method(&b) }.to yield_control.once
问题是我需要分配@attr才能完全完成测试。由规范生成的块b
不会返回nil,因此@attr
变为nil,这使得无法得出规范。
我基本上需要块返回它收到的相同值。
我尝试创建一个lambda并期望它接收call
但是它不起作用,我猜是因为它是一个块。
l = ->(k,v) { v } # I set the return value
expect(l).to receive(:call).once
x.method(&l)
# call is not called
如果转换为块,我如何检查l
是否被执行?
答案 0 :(得分:0)
我找到的解决方案是创建另一个从原始调用内部调用并返回原始值的lambda。像这样:
x = ->(v) { v }
l = ->(k,v) { x.call(k, v) }
expect(x).to receive(:call)
Whoala