2

Autofacで実行されているMVCWebがあります。すべての設定はweb.configのautofacconfigセクションに保存され、実行するとグローバルasaxがコンテナを設定し、設定設定を提供することですべてのモジュールを分類します-現時点で私が興味を持っているのはNHibernateモジュール-これにより、接続文字列がコンストラクターに設定されます。

NHibernateを使用してデータアクセスをテストするためのテストをいくつか構築したいと思います。リポジトリとサービスレイヤーがありますが、これは必ずしも適切ではありません。

すべてのテストを含むソリューションにプロジェクトを追加する必要があります。これを行う場合は、このテストプロジェクトのautofac構成でデータベース接続文字列を複製し、このプロジェクトでデータをテストするテストコンテナを構築する必要があります。アクセス?または、テストを行うためにWebアプリのコンテナーを取得しようとしている必要があります。これは、Global.asaxのApplication_startがhttpGETにヒットしない限り実行されないためではないと思います。Webアプリの構成とコンテナーの作成をすべて複製したくはありませんが、現時点では、複製する必要があると考えています...?

4

1 に答える 1

2

これに対する反応が遅いのを見て申し訳ありません。実際のDALの統合テストを作成することはそれほど一般的ではありません。多くの場合、スタブDALに対する単体テストで十分です。したがって、この種のシナリオでは、おそらくそれほど多くの経験はありません。

すべての構成をAutofacモジュールに入れると、Global.asaxのコンテンツは、呼び出すbuilder.RegisterModule(new ConfigurationSettingsReader())のと同じくらい簡単になります。同じ構成ファイルを、ファイル名を使用するオーバーロードを使用して統合テストからロードできConfigurationSettingsReader()ます。

テスト対象のNHibernate用に個別のモジュールを用意するのではInstancePerLifetimeScope()なく、の代わりにを使用することを検討してHttpRequestScoped()/InstancePerHttpRequest()ください。これは同じ効果があり(ライフタイム階層をいじくり回していない限り:))、Webシナリオと非Webシナリオの両方で機能します。

お役に立てれば!ニック

于 2010-11-12T06:09:13.523 に答える