gpt4 book ai didi

c# - Moling DataContext 与 MS Moles?

转载 作者:太空狗 更新时间:2023-10-29 21:52:10 27 4
gpt4 key购买 nike

如何调动我在类中使用的 DataContext 以将消息写入表。我想断言 LINQ 正在写入的表具有预期的消息数。这是我目前所拥有的。

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 一起使用,我将得到此异常

Microsoft.Moles.Framework.Moles.MoleNotImplementedException: DataContext.Dispose() was not moled.

我在这里遗漏了什么以及如何在地鼠上实现 DataContext.Dispose()?我在不使用 Pex 的情况下独立使用 moles。

最佳答案

当您创建一个新的 Mole 时,其方法和属性的默认行为是抛出一个 MoleNotImplementedException每当他们被调用时。

要实现你可以做的内奸 context.Dispose = () => {};这意味着当 Dispose 时什么也没有发生。方法在 moled 实例上被调用。 我重读了这个问题,你可能在 Dispose 之后遇到了问题在基类中定义。要使用痣基方法,您需要执行以下操作:

var context = new MJustTestingDataContext();
var baseContext = new MDataContext(context);

baseContext.Dispose = () => {};

您需要实现被测代码调用的每个属性/方法,或者您可以使用方法 BehaveAsDefaultValue 全局设置鼹鼠实例的默认行为。 .这样,mole 中的每个方法都将不执行任何操作并返回其返回类型的默认值(如果存在)而不是抛出 MoleNotImplementedException。 .但是,如果您需要这种行为,最好使用 stub 而不是痣。

关于c# - Moling DataContext 与 MS Moles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3685589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com