2012-07-13 34 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

相关问题