Cam*_*rzt 4 ruby random ruby-on-rails stub minitest
我试过Random.stub :rand, 1 do ... end和Kernel.stub :rand, 1 do ... end和Class.stub :rand, 1 do ... end(因为当我跑self.class,我跑rand(2)我得到的Class).我也尝试过更换rand(2),Random.rand(2)但没有用.
那么我该怎么把兰德剔除?
rand是Kernel每个类中混合的模块的一部分.要存根它,您需要调用正在调用stub的对象rand.
在一个例子中可能最容易看到.在下面的代码中,rand是一个私有实例方法Coin,因为Coin隐式继承自Object和Kernel.因此我需要在实例上存根Coin.
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
Run Code Online (Sandbox Code Playgroud)