0
我有從Sinatra::Base
類繼承的Sinatra應用程序。在這個應用程序中,我有一個輔助方法,我在過濾器中使用。如何在使用minitest模擬庫的測試中模擬這種方法?Minitest嘲笑Sinatra應用程序
before do
unless valid_signature?
halt 401
end
end
我有從Sinatra::Base
類繼承的Sinatra應用程序。在這個應用程序中,我有一個輔助方法,我在過濾器中使用。如何在使用minitest模擬庫的測試中模擬這種方法?Minitest嘲笑Sinatra應用程序
before do
unless valid_signature?
halt 401
end
end
爲了valid_signature?
成爲屈輔助方法,它需要一個模塊的一部分。因此,假如你的模塊是MyModule
module MyModule
def valid_signature?
end
end
我們可以使用如下MINITEST嘲笑valid_signature?
:
MyModule.stub :valid_signature?, "stub return value" do
# method is stubbed only in this block, so run tests from here
# make sure your module was defined before you stub it.
end
如果從內部的塊太大限制運行測試,我建議看Mocha stubbing and mock library或者乾脆手動在測試文件中自己重新定義方法:
MyModule
def valid_signature?
# you can only redefine after class has already been defined.
"stub return value"
end
end
可悲的是,它沒有工作。我得到「未定義的方法'valid_signature?for MyModule」錯誤。切換到摩卡不是我認爲的選擇 - 這個項目已經使用minitest進行了很多測試。 – Sebastian
你確定用實際的模塊名稱替換了MyModule嗎?您還需要確保首先需要您的模塊。 –