2016-07-26 6 views
0

各テストの終了時に、各後続テストをトランザクション内にラップし、ロールバックすることは可能ですか?これは後継でこれを実装するための推奨される方法でしょうか?テスト対象のコードは、トランザクションを開いている場合はどうなりますか?(ネストされたトランザクションを)トランザクションテストを続ける

おかげ

答えて

1

はまた、それはうまくいく私はSequelizeは、ネストされたトランザクションをサポートしています信じていません。

1つのテストの変更が別のテストに影響しないように、テスト間の分離を維持しようとしているようです。私のチームは、試験データベースにbeforeEach宣言のフィクスチャデータを入力し、影響を受けるテーブルをafterEach宣言で切り捨てることで、これを実現します。テストはこのメソッドを使用してかなり迅速に実行されます。

+0

また、このアプローチを使用しています。トランザクションでテストをラップする理由は、すべてのテストでデータベースをすべてクリーンにするためにすべてのテーブルを切り捨てることを防ぐためです。私たちのテストスイートはかなり大きいので、切り詰めが各テストで最も時間を要する部分であると特定しました。 – user1990009

+0

おそらくすでにこれを行っているかもしれませんが、クリーンアップステップの焦点を絞って、各テストブロックの影響を受けるテーブルのほんの一部を切り捨てるように 'describe'ブロックごとに構成することができます。たとえば、 'User'モデルをテストしている場合、そのファイルに' afterEach'を追加して 'User'テーブルだけを切り捨てます。 –

関連する問題