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