このコードを考えると:
namespace Eisk.Controllers
{
public class EmployeesController : Controller
{
DatabaseContext _dbContext;
public EmployeesController(DatabaseContext databaseContext)
{
_dbContext = databaseContext;
}
public ViewResult Index()
{
var employees = _dbContext.EmployeeRepository;
return View(employees.ToArray());
}
コンストラクターはデータベースを新規作成しないことに注意してください。
単体テストからアクセスすると、databaseContext を注入でき、コントローラーはテスト中にそれを使用します。私が理解できないのは、このコードが実行時に使用しているデータベース コンテキストを取得している場所です。私がそれを見つけることができれば、その動作を回避する方法を見つけ出し、代わりにモック/インメモリ DB を使用させることができるかもしれません。
詳細説明: 現在、このアプリケーションのレガシー データベースにアクセスできないため、xml ファイルから入力されるインメモリ データ ソースをモックアップしようとしています。そのため、デフォルトのデータベース コンテキストの作成を回避できるようにする必要があります。
詳細情報: これまでのすべての助けに感謝します。素晴らしい人々です。
スティーブンは私を正しい道に導いたようです。Global.asax ファイルには、次の呼び出しがあります。
DependencyInjectorInitializer.Init();
それに続いて、次のコードを取得します。
public static void Initialize()
{
_container = new UnityContainerFactory().CreateConfiguredContainer();
var serviceLocator = new UnityServiceLocator(_container);
ServiceLocator.SetLocatorProvider(() => serviceLocator);
DependencyResolver.SetResolver(new UnityDependencyResolver(_container));
}
少なくともそれは私を正しい方向に向かわせます。ここで、Unity がどのようにコンテキストを作成しようとしているのかを理解して、介入できるようにする必要があります。
- ここに EISK MVC Employee Info Starter Kit をプラグインさせてください。これは、Mohammad Ashraful Alam らによって開発されたよく考えられたシステムです。これには、いくつの新しいテクノロジーがうまく組み合わさっているかを示す十分な例が含まれています。MVC 5、Entity Framework 6、Unity、Authentication、OpenAuth、DI、Moq、その他いくつか。テンプレート、一般的な学習、またはトレーニングとして使用できます。 従業員情報スターター キット