0

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

class Driver
  DRIVER_NAME = "google"
end

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

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

结果很有趣:

意外调用:#<Mock:0x35c0690>.instance_method_get(:@mockery)

摩卡的来源相当复杂和纠结。我什至找不到mock为每个创建的点Minitest::Test对象创建的点。

那么我如何在 Mocha 中对模拟进行子类化呢?有没有直接的方法?


我的备用解决方案是简单地使用上面显示的三行类driver.stubs(:name)...而不是使用模拟,但这感觉像是解决问题的错误方法。

4

1 回答 1

0

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

class TestDriverManager
  def test_something
    foo = TestDriver.new
    foo.expects(:valid?).returns(true).once

    # ...
  end

  class TestDriver
    DRIVER_NAME = "test"
    ...
  end
end

所以真的没有必要,至少在我的情况下,子类模拟。

于 2014-02-04T19:41:09.987 回答