Thanks Xavier it worked. But I need a small clarification. How could we 
stub chain of methods where each method asks a set of arguments?

On Friday, 7 February 2014 08:55:28 UTC+5:30, Xavier Shay wrote:
>
>  
> On 5/02/14 10:40 PM, siva wrote:
>  
>
>   Hi Xavier 
>
>    Thanks for your reply.
>
>    I want assert whether `calculate` has been called no. of times that 
> loop has been iterated with the same parameters every time.
>
>   And on class `InterestAmount` initializer I set the parameters in 
> instance variables like as  follows so that I can use same instance 
> variables across all methods in `InterestAmount` class.
>
>   class InterestAmount
>    def initialize(installment, date, project)
>     @installment = installment
>     @project = project
>     @date = date
>   end
>   end
>  
> If you do:
>
> class InterestAmount
>   def self.calculate(*args); new(*args).calculate; end
>   #...
> end
>
> you hide the initializer, and subsequently your tests get much nicer. 
> (i.e. listening to the test leads to a nicer interface)
>
>  
>
>
>
> On Wednesday, 5 February 2014 10:42:44 UTC+5:30, Xavier Shay wrote: 
>>
>>
>> On 4/02/14 1:05 AM, siva wrote: 
>> > 
>> > 
>> >    Hi all 
>> > 
>> >    In my controller I have code as below: 
>> > 
>> >       # app/controllers/bookings_controller.rb 
>> > 
>> >      @booking.unit_installments.each do |i| 
>> >         InterestAmount.new(i, Date.today, project).calculate 
>> >       end 
>> > 
>> >      I have seen `stub_chain` method but I didn't find how to stub 
>> > chain methods with arguments and how to verify chain methods with 
>> > arguments as well. Could you help me? 
>> What are you trying to test/assert here? 
>> At a first glance, I'd refactor InterestAmount to provide an interface 
>> `InterestAmount.calculate`, then you don't need to use stub_chain, and 
>> also hide your implementation. 
>>
>> Cheers, 
>> Xavier 
>> > 
>> >     Thanks in advance. 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> > Groups "rspec" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> > an email to [email protected]. 
>> > To post to this group, send email to [email protected]. 
>> > To view this discussion on the web visit 
>> > 
>> https://groups.google.com/d/msgid/rspec/be2b852e-283d-4d80-99c3-c83604aa9513%40googlegroups.com.
>>  
>>
>> > For more options, visit https://groups.google.com/groups/opt_out. 
>>
>>  -- 
> You received this message because you are subscribed to the Google Groups 
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/444f7e07-369b-47bb-a920-5fce1a282907%40googlegroups.com
> .
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>  

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/4dad5878-aaa2-4eec-8d5e-a05083950649%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to