【发布时间】:2017-08-03 17:14:08
【问题描述】:
我需要测试我的方法是否正确产生,实现类似于
def method(val)
@attr = yield(val)
end
我的测试是这样写的:
expect{ |b| x.method(&b) }.to yield_control.once
问题是我需要分配的@attr 才能完全完成我的测试。而 spec 生成的块 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被转换为块,我如何检查是否执行?
【问题讨论】:
标签: ruby-on-rails ruby rspec