On Mar 25, 2010, at 8:44 AM, garren wrote: > I'm actually looking to mock "my_helper_method" here. Or to be more > general any method that is created outside of a class.
When you create a method outside a class, it is available on every object: def foo "foo" end class Bar end describe Bar do it "responds to foo" do Bar.new.foo.should == "foo" end end In terms of mocking or stubbing that, just do it directly on the object. describe Widget do it "does something" do widget = Widget.new widget.stub(:some_method_i_defined_outside_a_class) { "this value" } # ... end end HTH, David PS, if you're mocking or stubbing a method, it doesn't need to actually exist. > On Mar 25, 6:27 am, "J. B. Rainsberger" <jbrainsber...@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...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users