Yes, I know, that testing private methods it's not a good idea (and I read this thread - http://www.ruby-forum.com/topic/197346 - and some others)
But how can I test the following code?
I use xmpp4r. In my public method #listen
I start receive jabber
messages like so:
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
- runs block, when message come (in different thread)
So, testing #listen
method it's difficult and it more testing xmpp4r
than my #do_things_with_message
How to do all right and test #do_things_with_message
?:)
(http://www.ruby-forum.com/topic/197346#859664)
Refactor private methods to a new object essentialy would be as I making them a public (and class with one method - it's senselessly
EDIT:
This is more a theoretical question about clean code and the correct tests.
In my first link people argue that the test private methods poorly.
I don't want cheat with #send
, but also I don't see any viable ways to refactor