我正在使用MiniTest 2.12.1(Ruby> = 1.9附帶的股票測試框架的最新版本),我無法弄清楚如何用它來模擬類方法,這與使用類似於Mocha,例如:Ruby:用MiniTest嘲笑類方法?
product = Product.new
Product.expects(:find).with(1).returns(product)
assert_equal product, Product.find(1)
我已經涉足互聯網的天,我還是找到一個合理的答案。請幫忙?
我正在使用MiniTest 2.12.1(Ruby> = 1.9附帶的股票測試框架的最新版本),我無法弄清楚如何用它來模擬類方法,這與使用類似於Mocha,例如:Ruby:用MiniTest嘲笑類方法?
product = Product.new
Product.expects(:find).with(1).returns(product)
assert_equal product, Product.find(1)
我已經涉足互聯網的天,我還是找到一個合理的答案。請幫忙?
如果您使用2.12.1卡住了,這可能對您沒有幫助,但看起來像是他們在HEAD here中添加了方法存根至minitest/mock。
那麼,是你更新到MINITEST的頭,我覺得你可以這樣做:
product = Product.new
Product.stub(:find, product) do
assert_equal product, Product.find(1)
end
你如何更新到minitest HEAD? (謝謝!) – mpelzsherman
看起來他們已經爲我寫了一個新版本,因此不需要更新HEAD。最新版本現在在3.5.0。如果你使用的是捆綁器,你可以通過確保你的Gemfile裏有這樣一行:'gem'minitest','3.5.0''來更新minitest。如果你想解決HEAD版本問題,你可以在你的Gemfile中使用:'gem'minitest',:git =>'git:// github.com/seattlerb/minitest.git''。如果你不使用Bundler,我認爲'gem update minitest'應該這樣做。 – Adam
只是爲了澄清:這不完全等同於問題中的摩卡解決方案:'.find'調用的參數未通過此解決方案進行驗證... – severin
我覺得是不可能做出這種_mocking_與'MINITEST/mock',[複製?]( http://stackoverflow.com/questions/7211086/how-do-i-stub-things-in-minitest) – fguillen