[rspec-users] Mock Global method

garren
Thu, 25 Mar 2010 13:44:41 -0000

I''m actually looking to mock "my_helper_method" here. Or to
be more
general any method that is created outside of a class.

On Mar 25, 6:27?am, "J. B. Rainsberger" <jbrainsber... at
gmail.com>
wrote:
> 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-us... at