知道为什么以下代码不起作用?
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
答案 0 :(得分:1)
Ruby case
处理===
比较而没有显式调用class
,尽管对test.class
的结果进行显式比较会使上述代码生效。< / p>
如果你不能这样做,正如你上面所说,你可能无法让case
这样的人工作。我的猜测是,Ruby的case
实现是在C中实现的,因此class
可能永远不会被调用,期望永远不会满足。