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
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users