lib/minitest/utils/extension.rb in minitest-utils-0.2.4 vs lib/minitest/utils/extension.rb in minitest-utils-0.2.5

- old
+ new

@@ -52,7 +52,20 @@ end end include mod end + + def self.let(name, &block) + target = instance_method(name) rescue nil + message = "Cannot define let(:#{name});" + + raise ArgumentError, "#{message} method cannot begin with 'test'." if name.to_s.start_with?('test') + raise ArgumentError, "#{message} method already defined by #{target.owner}." if target + + define_method(name) do + @_memoized ||= {} + @_memoized.fetch(name) {|k| @_memoized[k] = instance_eval(&block) } + end + end end end