How to write a spec file for a following helper module ArtistsHelper def round_to(x) (self * 10**x).round.to_f / 10**x end end Regards salil -- Posted via http://www.ruby-forum.com/.
On Mon, Apr 13, 2009 at 12:09 PM, Salil Gaikwad <lists at ruby-forum.com> wrote:> How to write a spec file for a following helper > > module ArtistsHelper > > def round_to(x) > ? ?(self * 10**x).round.to_f / 10**x > end > > endin spec/helpers/artists_helper_spec.rb: describe AristsHelper do it "rounds to ...." do helper.round_to(xxx).should == yyy end end Cheers, David> > Regards > > salil > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
On Mon, Apr 13, 2009 at 8:17 AM, David Chelimsky <dchelimsky at gmail.com> wrote:> On Mon, Apr 13, 2009 at 12:09 PM, Salil Gaikwad <lists at ruby-forum.com> wrote: >> How to write a spec file for a following helper >> >> module ArtistsHelper >> >> def round_to(x) >> ? ?(self * 10**x).round.to_f / 10**x >> end >> >> end > > in spec/helpers/artists_helper_spec.rb: > > describe AristsHelper do > ?it "rounds to ...." do > ? ?helper.round_to(xxx).should == yyy > ?end > endThat''s what I was going to say, but I''m not sure that it''s a Rails helper...the calculation rounds self. So I''m a bit confused. If this is a module that you''re using to extend the behavior of Numeric classes, just mix it in somewhere and write examples for the class that got the mixin. Pat
On Apr 13, 11:26?am, Pat Maddox <pat.mad... at gmail.com> wrote:> If this is a module that you''re using to extend the behavior of > Numeric classes, just mix it in somewhere and write examples for the > class that got the mixin.I prefer to test modules in isolation by mixing them into a stub in the spec, in order to make it explicit that we''re describing the module itself (not some other class), and to avoid dependencies on that other class. For example: describe ArtistsHelper do before do @artist = 123.456 class << @artist include ArtistsHelper end end it "should round stuff" do @artist.round_to(1).should == 123.5 end end Granted, it looks a little awkward here since it looks like the module is meant to be used with a Numeric, but in general I find this approach to be pretty clean. -- Brandt
On 14 Apr 2009, at 16:14, Brandt Kurowski wrote:> On Apr 13, 11:26 am, Pat Maddox <pat.mad... at gmail.com> wrote: >> If this is a module that you''re using to extend the behavior of >> Numeric classes, just mix it in somewhere and write examples for the >> class that got the mixin. > > I prefer to test modules in isolation by mixing them into a stub in > the spec, in order to make it explicit that we''re describing the > module itself (not some other class), and to avoid dependencies on > that other class. For example: > > describe ArtistsHelper do > before do > @artist = 123.456 > class << @artist > include ArtistsHelper > end > end > > it "should round stuff" do > @artist.round_to(1).should == 123.5 > end > end > > Granted, it looks a little awkward here since it looks like the module > is meant to be used with a NumericIsn''t it? That''s probably what I would infer if I read this code. Is there any reason why you don''t do this? @artist = Object.new.extend(ArtistHelper) Matt Wynne http://beta.songkick.com http://blog.mattwynne.net