Да, я знаю, что тестирование закрытых методов, это не очень хорошая идея (и я прочитать эту тему - http://www.ruby-forum.com/topic/197346 - и некоторые другие)Testing частный метод в Рубине (RSpec)
Но как я могу проверьте следующий код?
Я использую 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)
реорганизовывать частные методы к новому объекту essentialy бы я сделать их публичное (и класс с одним методом - это бестолково
EDIT: Это более теоретический вопрос о чистом коде а правильные тесты. В моей первой ссылке люди утверждают, что тесты частных методов плохо. Я не хочу обманывать с #send
, но и я не вижу никаких жизнеспособных способов реорганизовать
Это не реальный вопрос. Поток, на который вы ссылаетесь, уже дает вам несколько методов для достижения того, что вы хотите, и некоторые полезные советы о том, как формировать дизайн вокруг проблемы. Вы можете обмануть и использовать 'send' или включить метод в своих тестах, или вы можете реорганизовать. – dbenhur
@dbenhur Я не хочу обманывать, но также я не вижу никаких жизнеспособных способов рефакторинга – Andrey
Если ваш код достаточно сложный, вам нужно проверить частный метод (т. Е. Это не просто простая модель.найти или что-то еще), тогда вполне может быть достаточно сложным, чтобы в любом случае стоить выходить в отдельный класс. – Jason