2012-07-13 52 views
0

我使用工廠女孩來創建inventory_count = 3的模型在我的測試,我想測試對於當inventory_count =這裏0..so是我所做的:rspec的模型屬性更改不保存正確

before(:each) do 
    @user = FactoryGirl.create(:user) 
    @piece = FactoryGirl.create(:piece) 
    @lineup = @user.lineup 
end 

it 'should have status \'Waiting List\' if the piece doesn\'t have available inventory' do 
    @piece.available_count = 0 
    @lineup.pieces << @piece 
    piece_lineup = @lineup.piece_lineups.find_by_piece_id(@piece.id) 
    piece_lineup.set_status 
    piece_lineup.status.should == 'Waiting List' 
end 

我在@ piece.available_count = 0後放了一個調試器,它是= 0,但是當它到達下一行時,它會切換回舊值。我試着給@piece添加一個.save,但它仍然不起作用。難道我做錯了什麼?我應該在factorygirl中創建新的價值模型,而不是試圖在飛行中做到這一點?

回答

0

我相信這將是更好的做法寫:

@piece = FactoryGirl.create(:piece, :available_count => 0) 

創建piece模型與已經其計數爲0

而且,你的問題開始提inventory_count。你真的意思是available_count?只是想確保你沒有錯別字。

0

更改不會將其發送到數據庫。嘗試

@piece.update_attributes!(available_count: 0)

編輯:跳過正在重置AVAILABLE_COUNT回調,使用update_column(:available_count, 0)

+0

只要寫你怎麼通常會。這是最近推出的一種新的哈希編寫方式。你使用的是什麼版本的紅寶石? – cdesrosiers 2012-07-13 19:36:53

+0

我使用紅寶石的最新versino ... ...奇似乎工作,一旦但是現在同樣的測試失敗...... – 2012-07-13 19:37:36

+0

有什麼錯誤? – cdesrosiers 2012-07-13 19:39:04