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」模塊,從而允許在任何地方調用其方法。因爲它仍然是一個普通的模塊,所以你可以像使用其他方法一樣覆蓋每個類的方法(儘管你應該小心這樣做)。 –