0

一部の(すべてではない)モデルのフィクスチャを作成し、他のモデルのオブジェクトを作成して保存するテストを作成しました。Railsに組み込まれている標準のテストシステムを使用しています(rake test)。私のテストの1つで、私はと呼びましdebuggerた。

デバッガーで呼び出すとLogin.all、テストで作成された2つのログインが返されます。ただし、データベース(PostgreSQLデータベース、pgAdmin 3を使用して接続しています)に接続してを実行するselect * from loginsと、行は返されません。

フィクスチャがすべて揃っているので、これが適切なデータベースであることがわかります(たとえば、実行するselect * from usersと、フィクスチャのすべてのユーザーが表示されます)。

テスト中にActiveRecordオブジェクトを呼び出すと#save、実際にデータベースに挿入されると思いました。この仮定は間違っていますか、それとも私が間違っている他の何かがありますか?

4

1 に答える 1

0

トランザクションで実行される各テストがわかります。デバッガーがヒットしたとき、トランザクションはまだコミットされていないため、データベースには何も表示されません。トランザクションは手動でコミットできます(ただし、テストの完了後にデータをロールバックできないため、他のテストと衝突する可能性があります)。

于 2012-11-11T08:38:23.723 に答える