1
私はRuby 2.3.4とrspec 3.6.0を使用しています。rspecでrandをスタブする方法は?
rand(10000..99999)
を使用するオブジェクトのテストを作成しています。私はrand
の文書を見つけることができません。私はKernel
、Object
、およびRandom
(下記参照)をスタブしようとしましたが、私の試みではrand
がスタブされていませんでした。
allow(Kernel).to receive(rand).and_return(12345)
allow(Object).to receive(rand).and_return(12345)
allow(Random).to receive(rand).and_return(12345)
助けてください。
興味深い、私は考えルビーは 'それを呼び出してオブジェクトにそれ自身で呼び出さrand'が割り当てられませんでした。これはうまくいって、ありがとう! – theartofbeing
これはすべてのモジュールで同じです。モジュールをクラスに含めると、メソッドはクラスインスタンスで呼び出されます。 'Kernel'はここでも違いはありません。 'Kernel'モジュールはすべてのオブジェクトにデフォルトで含まれているので、そのメソッドはどこでも呼び出すことができるという点で「特別な」ことだけです。それはまだ普通のモジュールなので、他のメソッドと同じ方法でクラスごとのメソッドを上書きすることができます(そうしなければならないが)。 –