Да, я знаю, что тестирование частных методов это не очень хорошая идея (и я прочитайте эту тему - http://www.ruby-forum.com/topic/197346 - и некоторые другие)
Но как я могу проверить следующий код?
Я использую xmpp4r. В моем общедоступном методе #listen
я начинаю получать jabber
такие сообщения:
def listen
@client.add_message_callback do |m|
do_things_with_message(m)
end
end
private
def do_things_with_message(m)
#
end
#add_message_callback
- запускает блок, когда приходит сообщение (в другом потоке)
Итак, тестирование метода #listen
затруднено, и он больше тестирует xmpp4r
чем мой #do_things_with_message
Как сделать все правильно и проверить #do_things_with_message
?:)
(http://www.ruby-forum.com/topic/197346#859664)
Частные методы рефакторинга для нового важного объекта будут такими, как я делаю их публичными (и класс с одним методом - это бессмысленно
EDIT:
Это скорее теоретический вопрос о чистом коде и правильных тестах.
В моей первой ссылке люди утверждают, что тесты частных методов плохо.
Я не хочу обманывать с #send
, но также я не вижу никаких жизнеспособных способов рефакторинга