Ложные методы, который получает блок как параметр

У меня есть сценарий более или менее как это

class A
  def initialize(&block)
    b = B.new(&block)
  end
end

Я - класс A поблочного тестирования, и я хочу знать, получает ли B#new блок, переданный A#new. Я использую Мокко в качестве ложной платформы.

Действительно ли это возможно?

6
задан Greg Campbell 15 July 2010 в 02:25
поделиться

2 ответа

Я пробовал это и с 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
2
ответ дан 17 December 2019 в 20:28
поделиться

Думаю, вы хотите:

l = lambda {}
B.expects(:new).with(l)
A.new(&l)

Я знаю, что это работает с RSpec, я был бы удивлен, если Mocha не поддерживает

0
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: