rspec模型属性更改未正确保存

时间:2012-07-13 19:22:42

标签: ruby-on-rails rspec

我正在使用工厂女孩来创建一个inventory_count = 3的模型。在我的测试中,我想测试一个case_count = 0的情况。所以这就是我做的:

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,但当它下到下一行时,它会切换回旧值。我尝试将.save添加到@piece但它仍然无法正常工作。难道我做错了什么?我应该在工厂女孩中创建新的价值模型,而不是试图在飞行中进行吗?

2 个答案:

答案 0 :(得分:0)

更改不是进入数据库。尝试

@piece.update_attributes!(available_count: 0)

编辑:要跳过重置available_count的回调,请使用update_column(:available_count, 0)

答案 1 :(得分:0)

我相信写作会更好:

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

创建一个piece模型,其计数已经为0。

此外,您的问题是开始提及inventory_count。你的意思是available_count吗?只是想确保你没有输入错字。