는 부모 클래스 Fruit
와 그 서브 클래스 Apple
및 Banana
을 감안할 때, 그것은 Apple
및 Banana
의 인스턴스에 대한 방법 foo
에 대한 호출이 스텁되도록, 방법 foo
Fruit
에 정의 된 스텁 수 있습니까?부모 클래스의 메소드를 스텁하여 모든 서브 클래스 인스턴스가 rspec에 스텁 될 수 있습니까?
class Fruit
def foo
puts "some magic in Fruit"
end
end
class Banana < Fruit
...
end
class Apple < Fruit
...
end
Fruit.any_instance.stubs(:foo)
작동하지 않았다 그것은 과일의 인스턴스를 위해 같은 단지 스텁을 보인다. 모든 하위 클래스에 대해 스텁을 호출하는 것 이외의 다른 방법을 구현할 수있는 간단한 방법이 있습니까?
이 링크는 비슷한 질문을 제기했지만 아직 답을 찾지 못했습니다. http://groups.google.com/group/mocha-developer/browse_thread/thread/99981af7c86dad5e
네,이 간단한 예를 들어 작동이 같은 일을했다. 그러나 많은 하위 클래스가 있다면 그것은 약간 어색 할 것입니다. 또한 메서드가 [base.rb에서 재정의] (http://stackoverflow.com/questions/1195531/listing-subclasses-doesnt-work-in-ruby-script-console)이기 때문에 ActiveRecord 모델에서는 작동하지 않습니다. 실제로 모든 컨트롤러와 모델을위한 메서드를 스텁 (stub)하는 방법을 찾고있었습니다. – Innerpeacer
이 방법은'c.constantize.any_instance.stubs (: foo)'를 사용하는 것을 제외하면 나에게 잘 돌아갔다. – jackbot