我有一個update
類型的方法,我試圖在使用MiniTest和FactoryGirl的Rails中測試。我的問題是雖然我可以看到更新是正確發生內更新功能,但它似乎不能正確地繼續回到測試功能。數據庫記錄沒有保存/堅持Rails測試功能?
這些是我們正在使用的對象,(obj
指定缺省location
,開始了:
location1 = create :location
location2 = create :location
obj = create :object, location: location1
然後我們調用update
函數,該函數id
的:
obj.update_location(obj.id, location2.id)
The update
功能:
def update_location(obj_id, loc_id)
@obj = Object.find(obj_id)
@obj.location_id = loc_id
@obj.save
end
但是當,早在測試文件,我嘗試assert
的變化...
assert_equal obj.location_id, location2.id
...我收到了故障。控制檯告訴我,obj.location_id
仍等於location1.id
!爲什麼是這樣?
看來,@obj.save
爲正常工作,因爲我插在更新功能puts @obj.inspect
並輸出正確更新location_id
。
我不認爲它與事務回滾有關,因爲這全部發生在單個測試中。 (而我的印象是事務回滾只發生在兩次測試之間)。
綜上所述,我的問題是:爲什麼我的更新不能堅持回MiniTest test
功能?
編輯:這裏是整個測試:
test "update_location" do
location1 = create :location
location2 = create :location
#give the obj a starting `type`
obj = create :obj, location: location1
obj.update_location(obj.id, location2.id)
assert_equal obj.location_id, location2.id
end
我想我們需要看到整個測試周期,然後才能以合理的方式思考它。我也會嘗試'保存!'以避免吃例外。 –
我在文件中添加了整個測試功能,並且只添加了測試功能。我正在使用'rake test test/models/obj_test.rb'運行該文件 –
(@ DaveNewton-Tried'保存!',沒有幫助...) –