This project is archived and is in readonly mode.
[PATCH] :memoized methods are stored in Klass.memoized_methods
Reported by MatthewRudy | August 25th, 2008 @ 10:41 AM | in 2.x
http://groups.google.com/group/r...
class MyKlass
def something(n)
return randomly(n)
end
memoize :something
end
class MyKlassTest
test "something is declared as memoized" do
assert MyKlass.memoized_methods.include?(:something)
end
test "something is memoized" do
my_model.stubs(:randomly).returns(1,2,3)
assert_equal 1, my_model.something(7)
assert_equal 1, my_model.something(7)
assert_equal 2, my_model.something(100)
end
end
I've currently put the :memoized_methods method on the Klass, perhaps it should be on the record, or called :memoized_instance_methods.
But it feels that, as it's declared in the class scope, it should set :memoized_methods in the same scope.
Comments and changes to this ticket
-
Michael Koziarski August 25th, 2008 @ 03:03 PM
- Assigned user set to josh
I still feel that this is better handled by you writing your own assertion
def assert_memoized(object, method) assert object.respond_to? "_unmemoized_#{method}" end
Changing the implementation just to suit tests seems broken.
-
josh August 25th, 2008 @ 04:18 PM
- State changed from new to wontfix
You might want to add some test coverage for mixins, inheritance, and extending objects. You might find an instance variable just won't work how you except it. Seriously, I tried this approach when I first wrote this helper.
-
MatthewRudy August 26th, 2008 @ 01:01 AM
hmm, yeah. maybe Mr Koz.
I still don't understand why this doesn't use alias_method_chain, though.
I may just abandon using :memoize anyway, as it doesn't seem like the best idea in the world.
I still see a use in asserting that a rails method has been used.
eg.
Model.should have_many(:sausages).with(:conditions => {:tasty => true})
is useful.
Although, I guess my particular brand of testing logic is distinct from yours.
Take it easy. Will nudge you at RailsConf in a week-ish
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>