I got it working. I had defined new on Foo rather than initialize so it was my dumb mistake that prevented your solution from working. Thanks a lot for your help Patrick.
Christopher On 01/09/2012 01:15 PM, Christopher Voltz wrote: > I knew it was a class method but wasn't sure how to put an expectation > on a class method. I tried your suggestion but, unfortunately, it > still fails, although with a different error message: > > 1) Foo should call new 3 > Failure/Error: > XMLRPC::Client.should_receive(:new3).with(options).and_return(client) > (<XMLRPC::Client (class)>).new3({:host=>"host.com", > :path=>"xmlrpc.php", :port=>"80", :user=>"username", > :password=>"password"}) > expected: 1 time > received: 0 times > > Any other suggestions? > > Thanks for your help, > Christopher > > On 01/09/2012 11:46 AM, Patrick J. Collins wrote: >>> 1) Foo should call new 3 >>> Failure/Error: Unable to find matching line from backtrace >>> Exactly one instance should have received the following >>> message(s) but didn't: new3 >>> >>> How can I change the spec to make this pass (while verifying that new3 >>> was called)? >>> >> This probably isn't working because .new3 is a class method, and you are >> setting an expectation for an instance method to be called. The way I >> would do this would be something like: >> >> client = stub("XMLRPC::Client", :new3 => true) >> XMLPRC::Client.should_receive(:new3).with(options).and_return(client) >> >> Patrick J. Collins >> http://collinatorstudios.com >> _______________________________________________ >> 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