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 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) -- Posted via http://www.ruby-forum.com/.
On 16 May 2013, at 04:22, "Andrey S." <lists at ruby-forum.com> wrote:> 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 > > 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)A rule of thumb is that if you really want to test the private method of an object, it probably should be a public method of another object.
On 16 May 2013, at 04:22, Andrey S. <lists at ruby-forum.com> wrote:> 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 > > 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)What does do_things_with_message do? How would I tell, from the outside of this class, that it has been invoked, and whether it has behaved as expected? Is there a collaborator on this class that it will send a message to? Is there some state that it will set on this class that I can read? cheers, Matt -- http://mattwynne.net || https://twitter.com/mattwynne || http://the-cucumber-book.com || http://bddkickstart.com || http://www.relishapp.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20130516/7705c732/attachment-0001.html>