如何测试预期的recs已添加到dbset mock

时间:2017-05-29 19:08:42

标签: entity-framework entity-framework-6 moq

我使用Moq和EF6。

在下面的代码中,我为3个DbContext对象和一个配置管理器创建了一个模拟器,所有这些都被传递给 HomeController 的构造函数。

Mock<BAMContext> bamDbContext = new Mock<BAMContext>();
        Mock<ESBContext> esbDbContext = new Mock<ESBContext>();
        Mock<UserPrefsContext> userPrefsDbContext = MockUserPrefsContext.GetContext(interchangeIds);

        var controllerContext = MockWebContext.AuthenticatedContext(adminUsers.First(), true);

        Mock<IConfigurationManager> configurationManager = new Mock<IConfigurationManager>();
        configurationManager.Setup(cm => cm.GetAppSetting("AdminUsers")).Returns(@"BizTalkBuild01\BizTalkAdmin;lgss\iwhite;");

        HomeController controller = new HomeController(bamDbContext.Object, esbDbContext.Object, userPrefsDbContext.Object, configurationManager.Object);

        controller.EnsureAdminUsersHaveDbRecs();

EnsureAdminUserHaveDbRecs方法将插入所需的recs。它还设置了一个公共属性 UserPrefsContext ,以便我在断言的单元测试中引用它。插入到模拟db上下文似乎工作正常,但如果我添加以下循环,则调试器不会介入:

foreach (var rec in controller.UserPrefsContext.UserRecs.ToList())
        {
            Debug.WriteLine(rec.AdLogonId);
        }

但是,如果我输入? controller.UserPrefsContext.UserRecs.Count()在即时窗口中给出结果3.我也可以用例如打印数据来打印数据。 ? controller.UserPrefsContext.UserRecs.First()。AdLogonId

任何人都可以解释为什么我不能迭代这3个recs吗?

0 个答案:

没有答案