【问题标题】:Partial mocking部分模拟
【发布时间】:2013-10-02 19:57:47
【问题描述】:

我需要部分模拟:

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

你能帮帮我吗?谢谢

【问题讨论】:

    标签: ruby unit-testing mocking


    【解决方案1】:

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

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

    mock(real_model).meth1 { mock_return_value }
    

    代理模拟将处理您所描述的问题:

    mock.proxy(real_model).meth1
    

    仍然必须满足期望,但执行了您的原始实现。

    【讨论】:

    • 非常感谢!你不知道它是如何实现的吗?我不会使用大包,而只使用部分模拟...我试图发现 RR 的代码但是...这很复杂吗?你知道它是如何实现的吗?
    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多