gpt4 book ai didi

ruby - Rspec:如何测试 yield self

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:20 24 4
gpt4 key购买 nike

我正在使用 rspec 3.0.0.beta1。我必须测试一个产生 self 的方法:

class Test
def initialize
yield self if block_given?
end
end

这是一个成功的测试:

describe Test do
context 'giving a block with one argument' do
it 'yields self'
expect { |b| described_class.new &b }.to yield_with_args described_class
end
end
end

但是它只测试了对象类,没有测试到self的身份。

这是我写的最接近(失败)的测试:

describe Test do
context 'giving a block with one argument' do
it 'yields itself'
instance = nil
expect { |b|
instance = described_class.new &b
}.to yield_with_args instance
end
end
end

它确实失败了,因为在评估最后一个实例出现时它是 nil,因此它与 block 评估中的实例不匹配。

最佳答案

yield 匹配器不能直接用于您的情况。最简单的做法是稍后使用不同的匹配器对第二个代码进行变体。

describe Test do
context 'giving a block with one argument' do
it 'yields itself'
yielded_instance = nil
new_instance = described_class.new { |i| yielded_instance = i }
expect(yielded_instance).to be new_instance
end
end
end

关于ruby - Rspec:如何测试 yield self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999271/

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