アプリでエラーが発生しましたが、これはおそらくいくつかの統合テストでキャッチできたはずです。
私の質問は、これらのテストのセットアップと、テストを実行するコードのレイヤーに関連しています。
設定
多くの統合テストが必要であることを考えると、テストごとにテスト データベースを作成および削除したくありません。私の考えは次のとおりです。
- 私の開発データベースの隣にあるテストデータベースを持っています
- テストの前に、スキーマを正しく設定し、必要なデータを挿入するリセット スクリプトを実行します (テスト ケース固有ではありません)。
- このテスト データベースを実際のデータベースのように使用するだけです。
ただし、[セットアップ] ごとに Fluent NHib 構成を実行する必要があるのは非常に無駄に思えます。これだけは厳しいですか?ここでのオプションは何ですか?
私のセッションは現在 UoW パターンでラップされており、作成と破棄は begin_request と end_request (MVC Web アプリケーション) でそれぞれ実行されます。この問題を解決するためにテストでうまく動作するようにこれを変更する必要がありますか?
テスト
実際にいくつかのテストを書くことになると、どのようにすればよいですか?
可能な限り最高レベル (MVC コントローラー アクション) からテストするか、最低レベル (リポジトリ) からテストする必要があります。
最低でテストすると、すべてのデータを手動でハードコーディングする必要があります。これにより、コードの変更に対してテストが脆弱になり、実行時にコードで実際に何が起こるかを表すこともできなくなります。最高でテストする場合、すべての IoCC セットアップを実行して、依存関係が注入され、すべてが機能するようにする必要があります (これも [SetUp] ごとに繰り返しますか?)。
うーん!私は道に迷っています。誰かが私を正しい方向に向けてくれます!
ありがとう