[rspec-users] RSpec mock question

Christopher Voltz cjunk at voltz.ws
Mon Jan 9 14:15:24 EST 2012

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
           (<XMLRPC::Client (class)>).new3({:host=>"host.com",
    :path=>"xmlrpc.php", :port=>"80", :user=>"username",
               expected: 1 time
               received: 0 times

Any other suggestions?

Thanks for your help,

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 at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120109/0fa1d55d/attachment.html>

More information about the rspec-users mailing list