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.
