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

Reply via email to