1

API ベースのサービスのテスト環境をまとめようとしています。理想的には、各テストが開始されるデフォルトのデータベースが必要です。

これが興味深いのは、API を介してすべての書き込み、読み取り、更新をトリガーしたいということです。これは、他の通常の日と同じようにデータベースにヒットします。これらの変更をロールバックする最善の方法を決定しようとしています。私はトランザクションを認識していますが、それらは接続に依存しているようで、Web アプリケーションの性質上、各操作が同じ接続を使用することを保証できません。

これに対する私の最初の試みは、毎回データベース全体をインポートすることになるでしょう。これが機能することはわかっていますが、遅くなる可能性があります。

トランザクションは機能するように見えますが、この方法でトランザクションを使用するのは比較的初めてです。

4

1 に答える 1

0

テストデータがデータベースに書き込まれていることを実際に確認する必要がある場合、トランザクションは探しているものではありません。コミットされていないトランザクションに目に見える形でアクセスすることはできません。

コードの単体テストのためにこれを行っていて、データベースに書き込まれたデータを実際に検証する必要がない場合は、実際のデータベースの代わりに使用するデータベースモックを作成する必要があります。データベースの書き込みを実際に検証する必要があり、各テストでデータベース内のいくつかのテーブルのみが変更されることがわかっている場合は、SQLを使用して、関心のあるテーブルを削除/作成/入力できるようにすることをお勧めします。 mysqldumpの完全なインポートを処理する必要はなく、各テスト実行の前にこれを行うことができます。

以前一緒に働いていた1人のテスターは、テストデータベースにテンプレートテーブルを作成するという同様のアプローチを取り、各テストの実行前に(とを使用CREATE TABLE test_table LIKE template_tableしてINSERT INTO test_table SELECT * FROM template_table)該当する各テーブルのコピーを作成し、各テストの破棄段階でテストテーブルを削除しました。

于 2013-02-12T18:18:07.743 に答える