On Dec 6, 2007 4:22 PM, Scott Taylor <[EMAIL PROTECTED]> wrote: > > > On Dec 6, 2007, at 5:12 PM, David Chelimsky wrote: > > > On Dec 6, 2007 4:08 PM, Scott Taylor > > <[EMAIL PROTECTED]> wrote: > >> > >> On Dec 6, 2007, at 4:41 PM, David Chelimsky wrote: > >> > >>> On Dec 6, 2007 3:37 PM, Scott Taylor > >>> <[EMAIL PROTECTED]> wrote: > >>>> > >>>> > >>>> What is the appropriate way to stub out (and put an expectation on > >>>> Object#__send__), without getting warnings from the Rspec mock > >>>> library? > >>> > >>> Come on Scott - you know better than that :) > >>> > >>> Error please? > >> > >> Not an error, just a warning. And I should have written my > >> description better. Basically, I wanted to make sure that my library > >> didn't call send, but instead __send__. I tried something like this: > >> > >> before :each do > >> @caller = Object.new > >> @caller.stub!(:send).and_raise > >> @caller.stub!(:__send__) > >> > >> end > >> > >> it "should be able to send the message with __send__" do > >> @caller.should_not_receive(:send) > >> @caller.should_receive(:__send__) > >> > >> @attributes.to_new_class_instance({}, @caller) > >> end > >> > >> > >> The @caller object is a sort of mock object. I would have used a > >> real mock object, except that stubbing send on a mock object didn't > >> seem to do anything. > >> > >> The warning was this: > >> > >> ./usr/local/lib/ruby/gems/1.8/gems/rspec-1.0.8/lib/spec/mocks/ > >> proxy.rb:99: warning: redefining `__send__' may cause serious problem > > > > I LOVE that it says "may cause serious problem" - not "problems" > > > > Anyhow - I'm not sure what we can do about that. RSpec's stubs work by > > redefining existing methods. Ruby doesn't want you to do that with > > __send__. For the moment, there's no way around it, but I'm not even > > sure what we could change in RSpec to make it work. Any ideas? > > Ah - so it's actually something ruby does, and not the mock library. > I hadn't realized that. > > I'm not sure this is the best idea, but we could actually remove the > warning: > > def execute_silently(&blk) > old_warning_level = $VERBOSE > $VERBOSE = nil > yield > $VERBOSE = old_warning_level > end > > > (or I could do this myself, in my own specs)
I'd be happier if you did that yourself. I don't want RSpec to be in the habit of hiding warnings. > > > Scott > > _______________________________________________ > 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