Method: Minitest::Spec::DSL#let
- Defined in:
- lib/minitest/spec.rb
permalink #let(name, &block) ⇒ Object
Essentially, define an accessor for name
with block
.
Why use let instead of def? I honestly don’t know.
248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/minitest/spec.rb', line 248 def let name, &block name = name.to_s pre, post = "let '#{name}' cannot ", ". Please use another name." methods = Minitest::Spec.instance_methods.map(&:to_s) - %w[subject] raise ArgumentError, "#{pre}begin with 'test'#{post}" if name.start_with? "test" raise ArgumentError, "#{pre}override a method in Minitest::Spec#{post}" if methods.include? name define_method name do @_memoized ||= {} @_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) } end end |