2013-09-19 3 views
0

У меня есть метод, как это:Тестирование EventMachine таймеры с RSpec

def my_method(id) 
    EventMachine.add_periodic_timer(10) do 
    my_other_method(id) 
    end 
end 

(Очевидно упрощена.) Как бы я написать RSpec тест, чтобы проверить my_other_method() называется? Или это повторяется неоднократно? Когда я вызываю my_method() из теста, тогда тест просто зависает из-за таймера EM.

Я видел em-rspec и em-spec, но не вижу, как их использовать для данного конкретного теста. Последнее, кажется, предполагает, что ваши таймеры EM записываются самими тестами, а не в коде, который вы тестируете? (Но, может быть, я не понял?)

ответ

0

Если я правильно вас понимаю, вы можете использовать их examples. Например

# test that method is called 10 times 
MyObject.should_receive(:my_other_method).exactly(10).times 

# stub 10 calls for method my_other_method 
MyObject.should_receive(:my_other_method).exactly(10).times.and_return(val1, val2, ..., val10) 

Вы можете найти другие примеры следующих по ссылке выше

+0

Я не понимаю, как это происходит, чтобы помочь с тестированием что-то, что будет вызываться каждые 10 секунд или около того, а не в 10 раз? –

+0

извините, я думаю, что не поймал ваш вопрос – gotva

Смежные вопросы