Rails的關係和回調測試模型我還在學習RSpec的工作,所以我很抱歉,如果完全忽略了什麼...在使用RSpec和Factory_Girl
我正在寫一個測試的食譜有很多成分。這些成分實際上是以百分比形式添加的(配方中的總列數),所以我想確保在每次保存後總列更新。
所以現在我的RSpec的測試爲recipe_ingredient模型是這樣的:
it "should update recipe total percent" do
@recipe = Factory.create(:basic_recipe)
@ingredient.attributes = @valid_attributes.except(:recipe_id)
@ingredient.recipe_id = @recipe.id
@ingredient.percentage = 20
@ingredient.save!
@recipe.total_percentage.should == 20
end
我只是呼籲剛纔保存收據成分的快速更新的after_save的方法。這是非常直接的:
編輯:這update_percentage行動是在配方模型。我在保存原料後調用的方法只是查找它的配方,然後在其上調用此方法。
def update_percentage
self.update_attribute(:recipe.total_percentage, self.ingredients.calculate(:sum, :percentage))
end
我搞砸了什麼?運行測試時,我沒有訪問父對象的權限嗎?我試圖運行一個基本的方法來保存後更改父配方名稱,但沒有奏效。我確定這是我忽略的關係中的一些東西,但是所有的關係都是正確設置的。
感謝您的任何幫助/建議!
對不起混淆update_percentage方法在配方模型中。 成分的after_save方法加載配方(@recipe = Recipe.find(self。),然後調用update_percentage(@ recipe.update_percentage) 如何在測試中重新加載配方? – sshefer 2010-07-01 21:06:20
在測試中嘗試過「@ recipe.reload」,它工作正常。謝謝伊恩,沒有意識到我必須這樣做! – sshefer 2010-07-01 21:16:00