Я хочу обнаружить вызов метода с помощью блока с использованием RSpec.
Deck#split_even_number
- это разбиение чисел на четные или нечетные.Я хочу обнаружить, что Enumerable#partition
вызывается с блоком.
Я пытаюсь использовать Proc.new { ... }
, но это ожидание всегда терпит неудачу.
Я думаю, что каждый Proc
экземпляр имеет различный идентификатор объекта.
Как это решить ..?
class Deck
def split_even_numbers
@cards.partition { |card| card.even? }
end
end
describe Deck do
describe '#split_even_numbers' do
let(:deck) { Deck.new(cards) }
let(:cards) { [5, 4, 3, 2, 1] }
# this test is more desirable than to detect method calling
it do
even, odd = deck.split_even_numbers
aggregate_failures do
expect(even).to match_array([2, 4])
expect(odd).to match_array([1, 3, 5])
end
end
it do
expect(cards).to receive(:partition).with(no_args) do |&block|
expect(block).to eq(Proc.new{ |card| card.even? })
end
deck.split_even_numbers
end
end
end