2011-08-13 7 views
0

...ほとんどの部分についてテストスイートの問題私は最近、私は3.1rc5をレールに働いていたアプリをアップグレードし3.1rc5

レールで、それは素晴らしいことだが、私のテストのいくつかは本当に奇妙な問題を抱えている。..

私は工場の女の子を使用して、偽のレコードの束を作成し、私のキュウリスペック...のいずれかで、例えば

通常、これは正常に動作しますが、それはいくつかの理由でレコードを作成していなかったようだった。..

だから私はコメント私の工場のものをすべて取り出し、これに置き換えました:

c = Contact.new(:first_name => "SOMEONE", :last_name => "COOL", :dob => 10.years.ago, :sex => "male") 
if c.save 
    puts "MYCOUNT: #{Contact.count}" 
else 
    puts "EXPLOSIONS!!!" 
end 

キュウリスイート出力の一部としてこれを実行して、この:

MYCOUNT: 0 

だから、連絡先レコードは明らかに保存された(と検証を渡して)まだ私は、カウントを呼び出すとき、それはまだ表示されないされています?

なぜですか?

私が使用しています:

Railsの3.1rc5

RSpecのレール

キュウリ、レール

factory_girl_rails

また、私はおそらく私が」に注意してください太陽黒点を使って私のモデルを索引付けする(solr API)https://github.com/outoftime/sunspot

+0

保存後に 'c.reload'を実行できますか?それは 'Contact.all'に現れますか? –

+0

長い待ち時間について申し訳ありません。休暇中でした:-) 異常なこと.. c.reloadを実行した後も、何も表示されません。Contact.allにも表示されません.c.new_recordもチェックしましたか?それは偽です。 これはちょっと変です! –

答えて

1

、あなたのテストの中に発射トランザクションのロールバックを持っているように聞こえる:

1)取引はContact.saveが)今合法的なContactインスタンスとDBのレコードを持っている(成功)

2をオープンしました

3)何かがうまくいかない、ActiveRecordの::ロールバック

4)取引を提起合法的な連絡先のインスタンスが、無デシベル記録を残して、ロールバックし、カウント= 0

これはあなたのRailsのアップグレードに関係する原因はわかりませんが、これは何が失敗しているのかを見つけるのに役立ちます。

EDIT:

あなたは尾あなたがロールバックを見るべきあなたのログ/ test.logファイルには、このような場合には発生した場合。以前のDB操作を見て、その前に最後に成功した操作が何であるかを知ることができます。

正確な科学ではありませんが、これが本当であるかどうかを判断して、横向きになった場所を大まかに知るのに役立ちます。

+0

ありがとうございました! ActiveRecord :: Rollbackがいつ呼び出されるかを知る方法はありますか? –

+0

これをデバッグする方法の詳細を追加しました。がんばろう!私は一週間前にこのようなバグを起こし、最初は完全に私を混乱させました。 – Winfield

+1

ええ..お金の上に、それを尾をして、私はロールバックを取得します。今どこから来ているのかを見いだして、やっかいなビットが来る! :Pこれを見ると、ロールバック前の最後のものは 'SELECT COUNT(*)FROM'連絡先 'WHERE' contacts'.approved' = 1'(承認済み= 1がデフォルトスコープです)です。 'RELEASE SAVEPOINT active_record_1' ...ロールバックの前に他の唯一のものをINSERTする以外は、' [paperclip]添付ファイルを保存しています.'私は犯人かもしれないと思っていたので、私はクリップクリップの内容をコメントしました。 !アー! –

関連する問題