使用摩卡可以存留整個鏈嗎?例如,我想要存根:RoR:使用摩卡的鏈式存根
User.first.posts.find(params[:id])
使得它返回一個預定義的後期實例,而不是訪問數據庫。理想情況下,我願意做這樣的事情:
@post = Post.new
User.any_instance.stubs(:posts,:find).returns(@post)
正如你所看到的,我刪空雙方的帖子「和「發現」方法一起使用。顯然這不是現在正在工作,但有沒有辦法達到這種效果?謝謝。
編輯: 我發現下面的網上黑客哪一種方式來做到這一點:
module Mocha
module ObjectMethods
def stub_path(path)
path = path.split('.') if path.is_a? String
raise "Invalid Argument" if path.empty?
part = path.shift
mock = Mocha::Mockery.instance.named_mock(part)
exp = self.stubs(part)
if path.length > 0
exp.returns(mock)
return mock.stub_path(path)
else
return exp
end
end
end
end
有了這個,你可以調用User.any_instance.stub_path( 'posts.find')返回(。 @post)
我發現了一些StackOverflow上是八九不離十做什麼,我們想做的事情。檢查我的問題的編輯部分。 – pushmatrix 2010-10-27 18:36:47