如何在rspec中模拟我的超类

时间:2015-12-05 10:35:43

标签: ruby rspec3

我有以下代码:

class Blurk
  def initialize
    # horror
  end

  def perform
    # yet more horror
  end
end

class Grunf < Blurk
   def perform
     super
     # here some code to test
   end
end

我想测试Grunf#perform上的代码,但我无法弄清楚如何模仿Blurk

1 个答案:

答案 0 :(得分:3)

一般来说,你不应该这样做。更好的方法是(恕我直言)对您的类定义进行细微更改

class Blurk
  def initialize
    # horror
  end

  def perform
    # yet more horror
    exec_perform
  end

  protected

  def exec_perform
    raise "exec_perform must be overriden"
  end
end

class Grunf < Blurk
   def exec_perform
     # here some code to test
   end
end

并分别测试Blurk和Grunf(在Blurk测试中,您可以创建TestClass定义以确认exec_perform按预期运行)。在Grunf的测试文件中,您只需测试exec_perform方法。