バックエンドサービスを開発・運用しています。テスト周りについて書いていきます。利用したアプリケーションのロジックがテストできないわけではありません。関連のツールを整備していた頃も強く感じたことなのですが、テストをきちんと書く文化を根付かせるためには「テストコード書くのダルい」とメンバーに感じさせない工夫は重要と思っています。通信させること自体は難しくありません。テストスイートを動作させる方法についての記載があります。同様の環境を用意するのも難しくはありません。使えば簡単に実現できます。テスト用のクリーンなデータベースがあるとはいえ、以下の課題が残ります。状態を初期状態に戻す必要がある。状態が変更される可能性があるため、並行にテストを実行できない。利用してテストを実行する場合に総じて課題になる話です。以外の言語では、どのようにこの課題に立ち向かっているのかを参考にすれば糸口が見えるはずです。永続ストアの状態への影響です。開発データベースを使用する場合でも、状態の変更は将来のテストに影響を与える場合があります。フレームワークはこの課題に対処します。デフォルトでは、フレームワークは各テストのトランザクションを作成してロールバックします。トランザクションの存在を想定できるコードを作成できます。テストでトランザクション的にプロキシされたオブジェクトを呼び出す場合、設定されたトランザクションのセマンティクスに従って、それらは正しく動作します。テスト用に管理されているトランザクション内で実行中にテストメソッドが選択したテーブルの内容を削除すると、デフォルトでトランザクションがロールバックされ、データベースはテスト実行前の状態に戻ります。これと同じアイディアですね。