我正在嘗試撰寫一些 rspec 測驗,并且我想從模塊中模擬一個靜態方法。
設定是這樣的:
module MyModule
def self.my_method
'end'
end
在 rspec 里面我想模擬 my_method,像這樣:
alow_any_instance_of(MyModule).to(
receive(:my_method).and_return('not_bla')
)
在作業代碼中,該方法是這樣呼叫的:MyModule.my_method
當我嘗試使用上面的設定時,它給了我以下錯誤:
MyModule does not implement #my_method
謝謝!
uj5u.com熱心網友回復:
RSpec 中存根訊息的新語法如下所示:
allow(MyModule).to receive(:my_method).and_return('not_bla')
不再推薦的舊語法如下所示:
MyModule.stub(:my_method).and_return('not_bla')
uj5u.com熱心網友回復:
我在這里找到了答案:https ://www.ruby-forum.com/t/modules-and-stub/168721
解決方案代碼如下所示:
MyModule.stub(:my_method).and_return('not_bla')
我在stackoverflow上找不到類似的東西。我應該洗掉這個問題嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474212.html
上一篇:Ruby的Base64.urlsafe_encode64(Digest::SHA256.hexdigest(STRING))的Python等價物是什么?
