是否可以在父类中存根方法,以便所有子类实例都在rspec中存根?

Inn*_*cer 7 ruby rspec ruby-on-rails mocha.js

给定一个父类Fruit和它的子类AppleBanana,是有可能存根方法foo定义Fruit,这样就方法的任何调用foo上的任何实例AppleBanana被存根?

class Fruit
  def foo
    puts "some magic in Fruit"
  end
end
class Banana < Fruit
  ...
end
class Apple < Fruit
 ...
end
Run Code Online (Sandbox Code Playgroud)

Fruit.any_instance.stubs(:foo)没有工作,看起来它只是水果实例的存根.除了为每个子类调用存根之外,还有一种简单的方法来实现这个目的吗?

发现此链接提出了类似的问题,但它看起来还没有得到回答. http://groups.google.com/group/mocha-developer/browse_thread/thread/99981af7c86dad5e

wee*_*HIS 9

这可能不是最干净的解决方案,但它有效:

Fruit.subclasses.each{|c| c.any_instance.stubs(:foo)}
Run Code Online (Sandbox Code Playgroud)