【问题标题】:How do I subclass mocks in Mocha?如何在 Mocha 中对模拟进行子类化?
【发布时间】:2014-02-28 12:22:45
【问题描述】:

我需要模拟一个对象,其类应该定义一些常量,例如:

class Driver
  DRIVER_NAME = "google"
end

我不想在我的单元测试中简单地使用类的实例,因为初始化成本很高,而且它有一个简单的接口,所以它是模拟的最佳选择。如果我可以简单地继承Mocha::Mock 并添加一些完美的常量。不过,我还没有找到实例化这些子类的方法。他们需要“嘲笑”作为初始化参数。我试过了:

TestDriver.new(self.mock.instance_method_get(:@mockery))

结果很有趣:

意外调用:#<0x35c0690>


    标签: ruby ruby-mocha


    【解决方案1】:

    我刚刚(偶然)意识到我可以在任何对象上调用expects,而不仅仅是模拟......

    class TestDriverManager
      def test_something
        foo = TestDriver.new
        foo.expects(:valid?).returns(true).once
    
        # ...
      end
    
      class TestDriver
        DRIVER_NAME = "test"
        ...
      end
    end
    

    所以真的没有必要,至少在我的情况下,没有必要继承 mock。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      • 2015-07-28
      相关资源
      最近更新 更多