Minitest ::模拟和案例陈述

时间:2015-05-19 10:48:48

标签: ruby mocking minitest

知道为什么以下代码不起作用?

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

1 个答案:

答案 0 :(得分:1)

Ruby case处理===比较而没有显式调用class,尽管对test.class的结果进行显式比较会使上述代码生效。< / p>

如果你不能这样做,正如你上面所说,你可能无法让case这样的人工作。我的猜测是,Ruby的case实现是在C中实现的,因此class可能永远不会被调用,期望永远不会满足。