【问题标题】:How can I stub rand in minitest?如何在 minitest 中存根 rand?
【发布时间】:2015-10-14 13:29:05
【问题描述】:

我尝试过Random.stub :rand, 1 do ... endKernel.stub :rand, 1 do ... endClass.stub :rand, 1 do ... end(因为当我运行self.class 时,我运行rand(2) 我得到Class)。我也尝试用Random.rand(2) 替换rand(2),但没有帮助。

那么我该如何存根 rand?

【问题讨论】:

    标签: ruby-on-rails ruby random minitest stub


    【解决方案1】:

    randKernel 模块的一部分,它混入了每个类。要存根它,您需要在调用 rand 的对象上调用 stub

    这可能是最容易在示例中看到的。在下面的代码中,randCoin 的私有实例方法,因为Coin 隐式继承自ObjectKernel。因此,我需要在Coininstance 上存根。

    require "minitest/autorun"
    require "minitest/mock"
    
    class Coin
      def flip
        rand(0..1) == 1 ? "heads" : "tails"
      end
    end
    
    class CoinTest < Minitest::Test
      def test_flip
        coin = Coin.new
        coin.stub(:rand, 0) do
          assert_equal("tails", coin.flip)
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 2017-02-14
      • 2014-12-28
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多