nte*_*rry 4 ruby unit-testing rspec yield block
所以我有以下内容:
foo.each do |f|
f.begin
do_stuff
do_more_stuff
end
end
Run Code Online (Sandbox Code Playgroud)
我用一个and_yield()调用来模拟f对象.我希望能够通过传递原始块{do_stuff do_more_stuff}来测试begin方法,而不是模拟实现....我不能在模拟上调用begin方法而不至少对其进行存根,那么做什么呢我做?
再一次,我找到了一个没有记录的功能:
allow(thing).to receive(:foo) do |_, &block|
block.call
end
Run Code Online (Sandbox Code Playgroud)
感叹......
以下对我有用:
original = thing.method(:foo)
expect(thing).to receive(:foo) do |_params|
# check params
expect(params).to include(something)
# then
original.call(params)
end
Run Code Online (Sandbox Code Playgroud)