【发布时间】:2015-05-19 10:48:48
【问题描述】:
知道为什么下面的代码不起作用吗?
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
【问题讨论】:
-
不应该是
case text.class吗? -
Ruby
case在没有显式调用class的情况下处理===比较,尽管对test.class的结果进行显式比较可以使上述代码工作。 -
问题是case语句在我无权访问的类中。
-
case不使用对class的任何显式调用来执行此处的比较,因此永远不会评估您的期望。这就是您需要问自己希望通过在被测对象上模拟class来实现什么。我不清楚上面的代码是为了演示什么,但是当你的测试需要具有这种侵入性时,它通常是一种气味。 -
所以没有办法让它工作?