首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Moles? DataContext?

用Moles? DataContext?
EN

Stack Overflow用户
提问于 2010-09-10 14:48:51
回答 1查看 1.7K关注 0票数 6

我如何在类中使用DataContext将消息写入表。我想断言,LINQ所写的表具有预期的消息计数。到目前为止我的情况是这样的。

代码语言:javascript
复制
var context = new MJustTestingDataContext();
MyMessagewriter writer = new MyMessageWriter(context);

var messageList = new List<MIncmoingMessage>();
MTable<MIncomingMessage> messageTable = new MTable<MIncomingMessage>();
messageTable.Bind(messagesLinqList.AsQueryable());

如果我在被测试的类中使用这段代码和xUnit,我将得到这个异常

代码语言:javascript
复制
Microsoft.Moles.Framework.Moles.MoleNotImplementedException: DataContext.Dispose() was not moled.

这里遗漏了什么,以及如何在鼹鼠上实现DataContext.Dispose()?我用的是没有佩克斯的单独鼹鼠。

EN

回答 1

Stack Overflow用户

发布于 2010-12-08 16:47:42

我很难理解你的测试在做什么。昨天我不得不做一些类似的事情,所以我将分享我的经验。首先,重要的是要明白,您不需要使用所有的MoleTypes来测试您的代码--您只需要使用Moles将代码的某些部分重定向到lambda表达式。给出了这样做的方法:

  1. 从数据库中获取要修改的用户列表
  2. 修改集合中的每个用户
  3. 将新的集合发送回数据库

我想重定向1和3,使其不使用数据库。例如,我可以通过以下代码重定向对SubmitChanges (3)的调用:

代码语言:javascript
复制
bool hitSubmitChanges = false;
int changeCount = 0;
IList<object> updates = null;

// more code here... 

   // redirect DataContext.SubmitChanges() to a lambda to catch updates 
   MDataContext.AllInstances.SubmitChanges = (c) =>
   {
    changeCount = c.GetChangeSet().Updates.Count;
    updates = c.GetChangeSet().Updates;
    hitSubmitChanges = true;
   };

这(以及获取用户的调用)将是我在测试中使用的唯一Moletypes。其余的都是正常的。然后,我可以使用断言来检查changeCount、更新和hitSubmitChanges的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3685589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档