garren wrote:

I'm very new to ruby and mocking a dynamic language. I would like to
mock a helper method in Sinatra. So an example is this:

    helper do
     def my_helper_method
       puts "Should do something useful here..."
     end
   end


How would I mock that method and how would I mock a method in general
that is a global method. Is it better practice not to have global
methods? Should I rather have an object inside the method call that
does all the work and I can mock that?

You can probably set an expectation on Kernel#puts, since although #puts looks global, it belongs to Kernel.

As for whether you should use #puts directly here, or indirectly through another object that you can easily control, that depends on the situation. Try both and compare the results.

In your situation, I'd probably just set expectations on Kernel#puts until that caused me problems, at which point I'd separate the behavior of deciding what to print from deciding where to print it. I find formatting messages much easier to check, in general, than displaying them.

Have fun.
--
J. B. Rainsberger :: http://www.jbrains.ca ::
http://www.thecodewhisperer.com
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to