2009/4/28 Andrew Premdas <aprem...@gmail.com>

> I guess I'll just have to use a global, perhaps trying to freeze them in
> production. Just thought there might be something that might be an
> alternative. Might have a look at using a stub if that doesn't work. Thanks
> for your input


You could pass the value as a constructor parameter into objects that use
it, defaulted to the constant:

def initialize(threshold = THRESHOLD)
  @threshold = threshold
  # ...
end

That way the default constructor would Do The Right Thing and you could pass
in values for testing. It is also more intention-revealing than referencing
global constants. (Where do you use the threshold? What for?)

Cheers,
Dan



> 2009/4/27 David Chelimsky <dchelim...@gmail.com>
>
> On Mon, Apr 27, 2009 at 7:00 AM, Andrew Premdas <aprem...@gmail.com>
>> wrote:
>> > Currently I have a very simple constants implementation being loaded as
>> a
>> > Rails initialiser
>> >
>> > module MVOR
>> >   module Postage
>> >     THRESHOLD = BigDecimal.new('6.99')
>> >     RATE = BigDecimal.new('30.00')
>> >   end
>> > end
>> >
>> >
>> > My scenarios of my postage feature want to deal with two situations when
>> the
>> > THRESHOLD has been set to zero and to '6.99'. The question is how can I
>> set
>> > the threshold in my step_definition. So I want to implement
>> >
>> >   Given the postage threshold is 0.00
>> >   Given the postage threshold is 6.99
>> >
>> >
>> >  I've considered a number of ideas, but seem to keep on getting into
>> complex
>> > solutions for what I assume is something very simple.
>>
>> If THRESHOLD can change, then it is not, by definition, a constant.
>> It's just a global variable.
>>
>> I'd change it to a method and then stub that method for a given
>> scenario (even though stubbing is a Cucumber no-no ;) ).
>>
>> WDYT?
>>
>> David
>>
>> >
>> > TIA
>> >
>> >
>> > _______________________________________________
>> > 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
>>
>
>
> _______________________________________________
> 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