Minitest::Mock 和案例陈述
Minitest::Mock and case statements
知道为什么以下代码不起作用吗?
require 'minitest/mock'
test = Minitest::Mock.new
test.expect :class, Class
p case test
when Class
'class'
else
'nope'
end # => 'nope' … but should return 'class'
p test.class === Class # => true
Ruby case
处理 ===
比较而不显式调用 class
,尽管对 test.class
的结果进行显式比较使得上面的代码有效。
如果您不能这样做,正如您在上面所说的那样,您可能无法使 case
像这样工作。我的猜测是 Ruby 对 case
的实现是用 C 实现的,因此 class
可能永远不会被调用并且期望永远不会满足。
知道为什么以下代码不起作用吗?
require 'minitest/mock'
test = Minitest::Mock.new
test.expect :class, Class
p case test
when Class
'class'
else
'nope'
end # => 'nope' … but should return 'class'
p test.class === Class # => true
Ruby case
处理 ===
比较而不显式调用 class
,尽管对 test.class
的结果进行显式比较使得上面的代码有效。
如果您不能这样做,正如您在上面所说的那样,您可能无法使 case
像这样工作。我的猜测是 Ruby 对 case
的实现是用 C 实现的,因此 class
可能永远不会被调用并且期望永远不会满足。