2015-06-04 23 views
0

我有從Sinatra::Base類繼承的Sinatra應用程序。在這個應用程序中,我有一個輔助方法,我在過濾器中使用。如何在使用minitest模擬庫的測試中模擬這種方法?Minitest嘲笑Sinatra應用程序

before do 
    unless valid_signature? 
    halt 401 
    end 
end 

回答

0

爲了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 
+0

可悲的是,它沒有工作。我得到「未定義的方法'valid_signature?for MyModule」錯誤。切換到摩卡不是我認爲的選擇 - 這個項目已經使用minitest進行了很多測試。 – Sebastian

+0

你確定用實際的模塊名稱替換了MyModule嗎?您還需要確保首先需要您的模塊。 –