2012-01-07 9 views
1

現在、Node.jsアプリケーションのDALでユニットテストを実行しています。ダミーのデータベースで作業したいと思っています。CRUD操作をテスト中に起こる非公式のセットアップ/ティアダウンでテストすることができます。たとえば、挿入を行い、削除を実行してティアダウンすることによって、セットアップが実行されます。Node.jsユニットテストのティアダウンステップとしてのMySQL自動インクリメントのリセット

データベースの半作業コピーに対して複雑なSQLをテストしたいので、私は模造品ではありません。

私が遭遇している問題は、AUTO_INCREMENTを持っているカラムでは、IDの一貫性が期待できません。 AUTO_INCREMENTをリセットすることで、これを避けることができますが、私はすべてのモデルにメソッドを挿入して、多くのコピー・ペースト・コーディングを行います。

私はこれを一度行うことができ、それを忘れる方法はありますか?それとも、私が完全に欠けているより良い練習がありますか?

+0

私はこの問題はすべて、あなたが「データベースをテストしていて、模擬/擬似ではない」というステートメントから生じていると思います。なぜあなたはあなたのテストセットアップの一環としてテーブルを最初から作り直していませんか? –

+0

@OliCharlesworthこれは、私が実際にMySQLのローカルバージョンに接続していて、それを嘲笑していないことを意味します。多分私は両方をしなければならないでしょうか?コントローラをテストするためのDALを嘲笑して、一種の統合テストとしてDALを別々にテストします。 –

+0

@OliCharlesworth私は確かにそれを行うことができました。そして、テーブルを 'tearDown'にドロップしてください。それはセットアップ/ティアダウンを行うためにテスト自体を使うことができたときには、非常に多くの作業のようです。 –

答えて

2

MySQLのTRUNCATE TABLEコマンドを使用すると、テーブルを空にしてAUTO_INCREMENTカラムをリセットすることができます。効果的に、テーブルを削除し、すべての行を削除するよりも速い再作成します。

+0

パーフェクト。ありがとう! –