0

factory girl を使用して、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 になりますが、次の行に進むと古い値に戻ります。@piece に .save を追加しようとしましたが、それでも機能しませんでした。私は何か間違ったことをしていますか?その場でやろうとするのではなく、factorygirl で新しい価値モデルを作成する必要がありますか?

4

2 に答える 2

0

変更はDBに反映されていません。試す

@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 に答える