0

我正在使用工厂女孩创建一个 inventory_count = 3 的模型。在我的测试中,我想测试一个何时 inventory_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 但它仍然不起作用。难道我做错了什么?我应该在 factorygirl 中创建新的价值模型,而不是试图在飞行中进行吗?

4

2 回答 2

0

更改没有进入数据库。尝试

@piece.update_attributes!(available_count: 0)

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

于 2012-07-13T19:28:04.180 回答
0

我相信写成这样会更好:

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

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

另外,你的问题开始提到inventory_count. 你真的是这个意思available_count吗?只是想确保你没有错字。

于 2012-07-13T19:31:20.070 回答