У меня есть сценарий более или менее как это
class A
def initialize(&block)
b = B.new(&block)
end
end
Я - класс A поблочного тестирования, и я хочу знать, получает ли B#new блок, переданный A#new. Я использую Мокко в качестве ложной платформы.
Действительно ли это возможно?
Я пробовал это и с Mocha, и с RSpec, и хотя я мог получить прохождение теста, поведение было неправильным. Из моих экспериментов я сделал вывод, что проверка прохождения блока невозможна.
Вопрос: Почему вы хотите передать блок в качестве параметра? Какую цель будет преследовать блок? Когда он должен быть вызван?
Возможно, это действительно то поведение, которое вы должны тестировать с помощью чего-то вроде:
class BlockParamTest < Test::Unit::TestCase
def test_block_passed_during_initialization_works_like_a_champ
l = lambda {|name| puts "Hello #{name}"}
l.expects(:call).with("Bryan")
A.new(&l)
end
end
Думаю, вы хотите:
l = lambda {}
B.expects(:new).with(l)
A.new(&l)
Я знаю, что это работает с RSpec, я был бы удивлен, если Mocha не поддерживает