Skip to main content

yielding_block_methods

🎁 Stub methods that yield to blocks with and_yield

For methods that accept blocks (like iterators or callbacks), use and_yield to simulate yielding values. You can chain multiple and_yield calls to mock each iteration or callback invocation.

RSpec.describe StreamProcessor do
it 'processes each line' do
stream = double('Stream')
allow(stream).to receive(:each).and_yield('line1').and_yield('line2')

lines = []
stream.each { |line| lines << line.upcase }

expect(lines).to eq(['LINE1', 'LINE2'])
end
end