如何在我的項目中模擬自寫模塊的模塊功能?如何模擬Ruby模塊的功能?
所指定的模塊和功能
module ModuleA::ModuleB
def self.my_function(arg)
end
end
被稱爲像
ModuleA::ModuleB::my_function(with_args)
我應該如何嘲笑它時,它就是我寫的規格爲函數內部使用?
加倍它(obj = double("ModuleA::ModuleB")
)是沒有意義的,我作爲函數被調用的模塊上,而不是一個對象。
我試過把它存根(ModuleA::ModuleB.stub(:my_function).with(arg).and_return(something)
)。顯然,它沒有工作。這裏沒有定義stub
。
然後我用should_receive
試了一下。再次NoMethodError
。
嘲笑模塊及其功能的首選方式是什麼?
這基本上,我的嘗試。感謝您的總結。然而,我的問題是,我把'should_receive'放在'before:all'塊中。顯然這是行不通的。我多麼愚蠢。 – 2012-07-06 06:41:40
@Torbjoern,噢。到過那裏。很高興你能解決問題。 – 2012-07-06 12:45:37
在當前的rspec(3.6)中,它提供了使用rspec-mocks舊':should'語法中的'should_receive'而不明確地啓用語法的方法,不推薦使用新的':expect'語法或顯式啓用':should'。 「 – 2017-06-06 10:03:40