部分嘲笑

时间:2013-10-02 19:57:48

标签: ruby unit-testing mocking

我需要部分嘲笑:

class Post
  def meth1; meth2; end
  def meth2; nil; end
end

real_model = Post.new
mock_model = SomeMock.new real_model
mock_model.expect :meth1, true
mock_model.validate
mock_model.verify # should return true if #meth2 has worked and false otherwise

有SimpleMock(https://github.com/tatey/simple_mock),但似乎是这样 不接受部分嘲笑: https://github.com/tatey/simple_mock/issues/3

你能帮帮我吗?感谢

1 个答案:

答案 0 :(得分:0)

我通常使用RR,它实现了代理,允许您在不覆盖方法本身的情况下创建方法的期望:

语法略有不同。这是一个典型的模拟:

mock(real_model).meth1 { mock_return_value }

代理模拟会像你描述的那样处理问题:

mock.proxy(real_model).meth1

仍然必须满足期望,但执行原始实施。